我是 R 新手,似乎无法理解这一点。我的文件夹中有多个 .txt 文件,想要导入并合并数据。我的问题是每个文本文件的最后一行。我尝试了多种方法但无法找到解决方案。预先感谢您的任何帮助。如果对以下内容有任何疑问,请告诉我。
文本文件1
|03/09/2015|Fist Name 1 |Last Name 1|Address 1
|03/09/2015|First Name 2|Last Name 2|Address 2
|2|2|||||||||||
文本文件2
|03/06/2015|First Name 3|Last Name 3|Address 3
|03/06/2015|First Name 4|Last Name 4|Address 4
|03/06/2015|First Name 5|Last Name 5|Address 5
|3|3|||||||||||
寻找以下结果
V1 V2 V3 V4
03/09/2015 First Name 1 Last Name 1 Address 1
03/09/2015 First Name 2 Last Name 2 Address 2
03/06/2015 First Name 3 Last Name 3 Address 3
03/06/2015 First Name 4 Last Name 4 Address 4
03/06/2015 First Name 5 Last Name 5 Address 5
最佳答案
您可以使用 count.fields()
来帮助计算 read.table()
中 nrows
的数量。您必须删除第一列,因为它是空的
files <- c("x1.txt", "x2.txt")
inList <- lapply(files, function(x) {
read.table(x, nrows = length(count.fields(x))-1, sep = "|")[-1]
})
do.call(rbind, inList)
# V2 V3 V4 V5
# 1 03/09/2015 Fist Name 1 Last Name 1 Address 1
# 2 03/09/2015 First Name 2 Last Name 2 Address 2
# 3 03/06/2015 First Name 3 Last Name 3 Address 3
# 4 03/06/2015 First Name 4 Last Name 4 Address 4
# 5 03/06/2015 First Name 5 Last Name 5 Address 5
您可以添加
colClasses = c("NULL", "character", "character", "NULL", "character"))
对上面的 read.table()
调用仅选择第 2、3 和 5 列(请参阅下面的注释)
另一种方法是使用fread()
。它使选择列变得更容易。
library(data.table)
rbindlist(
lapply(files, function(x) {
nr <- length(count.fields(x))-1
suppressWarnings(
fread(x, nrows = nr, sep = "|", header = FALSE, drop = c(1, 4))
)
})
)
# V2 V3 V5
# 1: 03/09/2015 Fist Name 1 Address 1
# 2: 03/09/2015 First Name 2 Address 2
# 3: 03/06/2015 First Name 3 Address 3
# 4: 03/06/2015 First Name 4 Address 4
# 5: 03/06/2015 First Name 5 Address 5
注意:这是使用 data.table development version 1.9.5
x1.txt
和 x2.txt
的位置
writeLines("|03/09/2015|Fist Name 1 |Last Name 1|Address 1
|03/09/2015|First Name 2|Last Name 2|Address 2
|2|2|||||||||||", "x1.txt")
writeLines("|03/06/2015|First Name 3|Last Name 3|Address 3
|03/06/2015|First Name 4|Last Name 4|Address 4
|03/06/2015|First Name 5|Last Name 5|Address 5
|3|3|||||||||||", "x2.txt")
关于删除每个 .txt 文件的最后一行并在 R 中导入/合并数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29216350/