gpt4 book ai didi

r import csv 跳过第一行和最后一行

转载 作者:行者123 更新时间:2023-12-02 04:39:28 27 4
gpt4 key购买 nike

我知道很多帖子已经回答了像我这样的类似问题,但我已经尝试了 2 天,但似乎我没有在这里看到图片...

我得到的 csv 文件如下所示:

Werteformat:                wertabh. (Q)
Werte:
01.01.76 00:00 0,363
02.01.76 00:00 0,464
...
31.12.10 00:00 1,03
01.01.11 00:00 Lücke

我想用数据创建时间线,但无法正确导入 csv。

到目前为止我已经试过了:

data<-read.csv2(file, 
header = FALSE,
sep = ";",
quote="\"",
dec=",",
col.names=c("Datum", "Abfluss"),
skip=2,
nrows=length(strs)-2,
colClasses=c("date","numeric"))`

但是后来我明白了

"Fehler in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
scan() erwartete 'a real', bekam 'L�cke'"

所以我删除了 colClasses 并且它起作用了,我摆脱了所有不需要的行。但是:一切都在因素中。所以我使用 as.numeric

Abfluss1<-as.numeric(data$Abfluss)

知道我可以使用 Abfluss 1 进行计算,但这些值与原始 csv 中的值完全不同...

Abfluss1
[1] 99 163 250 354 398 773 927 844 796 772 1010 1468 1091 955 962 933 881 844 803 772 773 803 1006 969 834 779 755
[28] 743 739

我哪里错了?!我真的很感激一些有用的提示。顺便说一下,我正在处理的文件可以在这里下载: http://ehyd.gv.at/#

只需单击其中一个蓝色三角形并下载“Q-Tagesmittel”

最佳答案

首先,文件编码似乎有问题。下载的文件显然有一个无法正确识别的拉丁编码,为什么它说 L�cke 而不是 Lücke:

encoding = "latin1"

其次,您的示例似乎不可重现:根据我的理解,您想要跳过 28 行(也许我错了)。并且您的示例中未声明变量 strs 。据我了解,你想跳过 28 行并留下最后一行,所以总共

nrows = length( readLines( file ) ) - 29

最后您遇到了这个常见的 R 问题:How to convert a factor to an integer\numeric without a loss of information? .整个列被解释为 character 向量,因为并非所有元素都可以被解释为 numeric。当将 character 向量添加到 data.frame 时,它​​默认转换为 factor 列。虽然这不是必需的,但如果您指定了正确的行范围,您可以使用

避免这种情况
stringsAsFactors = FALSE

总计:

f <- readLines("Q-Tagesmittel-204586.csv")
df <- read.csv2(
text = f,
header = FALSE,
sep = ";",
quote="\"",
dec=",",
skip=28,
col.names=c("Datum", "Abfluss"),
nrows = length(f) -29,
encoding = "latin1",
stringsAsFactors = FALSE
)

哦,以防万一您想在下一步将 Datum 列转换为日期对象,实现此目的的一种方法是

df$Datum <- strptime( df$Datum, "%d.%m.%Y %H:%M:%S" )

str(df)
'data.frame': 12784 obs. of 2 variables:
$ Datum : POSIXlt, format: "1976-01-01" "1976-01-02" "1976-01-03" "1976-01-04" ...
$ Abfluss: num 0.691 0.799 0.814 0.813 0.795 0.823 0.828 0.831 0.815 0.829 ...

关于r import csv 跳过第一行和最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21192121/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com