gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:36:45 24 4
gpt4 key购买 nike

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

我得到的 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向量添加到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/

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