我有一个包含几百万行的文本文件。每行应该有 10 个变量。它是逗号分隔的,但每隔一段时间变量中间就会有一个逗号(例如:第 3 行,“BLDG #5,#104”应该是一个变量,但是当我使用 read.import 导入时) csv()
它把一切都搞乱了)。这是一个例子:
1,09/29/1951,F,N,22 MAIN STREET AVE,APT 3,SEATTLE,WA,98102-3053,00920670025
2,09/28/1950,F,N,13354 A STREET,APT 2,BURLINGTON,VT,10101,02510070025
3,10/18/1949,M,N,600 CENTRE STREET,BLDG #5,#104,SPRINGFIELD,IL,01010,02141650025
4,10/18/1955,M,N,5 KELLY AVENUE,,CITY,XI,10101,02141650025
关于如何最好地导入这些数据有什么建议吗?
最佳答案
为什么不直接使用 read.csv
对您有利的功能呢?
dat <- read.csv(text="1,09/29/1951,F,N,22 MAIN STREET AVE,APT 3,SEATTLE,WA,98102-3053,00920670025
2,09/28/1950,F,N,13354 A STREET,APT 2,BURLINGTON,VT,10101,02510070025
3,10/18/1949,M,N,600 CENTRE STREET,BLDG #5,#104,SPRINGFIELD,IL,01010,02141650025
4,10/18/1955,M,N,5 KELLY AVENUE,,CITY,XI,10101,02141650025",
header=FALSE, stringsAsFactors=FALSE, comment.char="", fill=TRUE)
for (i in 1:nrow(dat)) {
if (is.na(dat[i, "V11"])) {
dat[i, 8:11] <- dat[i, 7:10]
dat[i, "V7"] <- NA
}
}
dat
## V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11
## 1 1 09/29/1951 F N 22 MAIN STREET AVE APT 3 <NA> SEATTLE WA 98102-3053 920670025
## 2 2 09/28/1950 F N 13354 A STREET APT 2 <NA> BURLINGTON VT 10101 2510070025
## 3 3 10/18/1949 M N 600 CENTRE STREET BLDG #5 #104 SPRINGFIELD IL 1010 2141650025
## 4 4 10/18/1955 M N 5 KELLY AVENUE <NA> CITY XI 10101 2141650025
如果您想组合 V6
+ V7
那么这是完全可行的。
使用 data.table
天赋来完成此操作会更加高效(即,如果有人发布 fread
+ 纯 data.table
解决方案应该得到“答案”勾选。
关于r - 导入地址文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491113/