我有一个例子数据,保存为csv
文件在这个网站。
1.csv
是别人发给我的,我不能用read.csv
正确地读成R。
> dat = read.csv('1.csv')
Warning messages:
1: In read.table(file = file, header = header, sep = sep, quote = quote, :
line 1 appears to contain embedded nulls
2: In read.table(file = file, header = header, sep = sep, quote = quote, :
line 2 appears to contain embedded nulls
3: In read.table(file = file, header = header, sep = sep, quote = quote, :
incomplete final line found by readTableHeader on 'data/hanze/1.csv'
然后我也尝试在read.csv
中添加sep
,但也失败了。
dat = read.csv('1.csv', sep = ',')
dat = read.csv('1.csv', sep = 't')
最后,我使用Microsoft Excel
重新保存1.csv
文件作为一个新的csv文件,使用逗号分隔符命名1_test.csv
,它可以工作。
dat = read('1_test.csv', encoding = 'UTF-8')
head(dat)
id station lon lat RASTERVALU
1 1 东四 116.417 39.929 0.2406870
2 2 天坛 116.407 39.886 0.0992821
3 3 官园 116.339 39.929 0.1243020
4 4 万寿西宫 116.352 39.878 0.2394120
5 5 奥体中心 116.397 39.982 0.2368810
6 6 农展<e9><U+00A6>? 116.461 39.937 0.2307600
在我的实际情况中,我有数百个像1.csv
这样的文件,我不想使用Microsoft Excel
将它们重新保存为新的csv文件。
我的问题是,是否有一种方法可以直接正确地读取1.csv
进入R而无需重新保存它?
这可能会引入不可预见的错误,但它似乎提供了预期的输出:
library(data.table)
library(tidyverse)
test <- fread(file = "~/Downloads/1.csv")
#> Warning in fread(file = "~/Downloads/1.csv"): Detected 1 column names but the
#> data has 140 columns (i.e. invalid file). Added 139 extra default column names
#> at the end.
test_df <- as.data.frame(matrix(unlist(test, use.names = FALSE), ncol = 4, byrow = TRUE))
test_df %>%
separate(V1, c("id", "station"), extra = "merge") %>%
mutate(station = gsub(pattern = "0", replacement = "", x = station)) %>%
rename("lon" = V2,
"lat" = V3,
"RASTERVALU" = V4)
#> id station lon lat RASTERVALU
#> 1 1 东四 116.417 39.929 0.240687
#> 2 2 天坛 116.407 39.886 0.0992821
#> 3 3 官园 116.339 39.929 0.124302
#> 4 4 万寿西宫 116.352 39.878 0.239412
#> 5 5 奥体中心 116.397 39.982 0.236881
#> 6 6 农展馆 116.461 39.937 0.23076
#> 7 7 万柳 116.287 39.987 0.201353
#> 8 8 北部新区 116.174 40.09 0.170883
#> 9 9 植物园 116.207 40.002 0.210636
#> 10 10 丰台花园 116.279 39.863 0.225224
#> 11 11 云岗 116.146 39.824 0.23084
#> 12 12 古城 116.184 39.914 0.17514
#> 13 13 房山良乡 116.136 39.742 0.243377
#> 14 14 大兴黄村镇 116.404 39.718 0.295714
#> 15 15 亦庄开发区 116.506 39.795 0.315679
#> 16 16 通州新城 116.663 39.886 0.255555
#> 17 17 顺义新城 116.655 40.127 0.212804
#> 18 18 昌平镇 116.23 40.217 0.160067
#> 19 19 门头沟龙泉镇 116.106 39.937 0.17251
#> 20 20 平谷镇 117.1 40.143 0.275457
#> 21 21 怀柔镇 116.628 40.328 0.177003
#> 22 22 密云镇 116.832 40.37 0.253771
#> 23 23 延庆镇 115.972 40.453 0.219738
#> 24 24 昌平定陵 116.22 40.292 0.15908
#> 25 25 京西北八达岭 115.988 40.365 -9999
#> 26 26 京东北密云水库 116.911 40.499 0.173666
#> 27 27 京东东高村 117.12 40.1 0.276452
#> 28 28 京东南永乐店 116.783 39.712 0.278231
#> 29 29 京南榆垡 116.3 39.52 0.533654
#> 30 30 京西南琉璃河 116 39.58 0.449057
#> 31 31 前门东大街 116.395 39.899 0.236876
#> 32 32 永定门内大街 116.394 39.876 0.148231
#> 33 33 西直门北大街 116.349 39.954 0.234347
#> 34 34 南三环西路 116.368 39.856 0.177043
#> 35 35 东四环北路 116.483 39.939 0.253252
由reprex包(v2.0.0)在2021-07-26创建