0
的我已经加载功能20个CSV文件:结合一些CSV文件合并成一个 - 列数不同
tbl = list.files(pattern="*.csv")
for (i in 1:length(tbl)) assign(tbl[i], read.csv(tbl[i]))
或
list_of_data = lapply(tbl, read.csv)
那它的样子:
> head(tbl)
[1] "F1.csv" "F10_noS3.csv" "F11.csv" "F12.csv" "F12_noS7_S8.csv"
[6] "F13.csv"
我必须将所有这些文件合并为一个。让我们把它称为主文件,但让我们尝试使用所有名称创建一个表。 在所有这些csv文件中都有一个名为“Accession”的列。我想从所有这些csv文件中创建一个所有“名称”的表格。当然,许多种质可以在不同的csv文件中重复使用。我想保留与加入相应的所有数据。
一些问题:
- 其中的一些“名”是一样的,我不想重复他们
- 其中的一些“名字”几乎是相同的。不同之处在于名称和成为点和数字后。
- 列数可以不同的是那些csv文件。
这显示屏幕截图这些数据看起来的样子: http://imageshack.com/a/img811/7103/29hg.jpg
让我告诉你它的外观:
AT3G26450.1 <--
AT5G44520.2
AT4G24770.1
AT2G37220.2
AT3G02520.1
AT5G05270.1
AT1G32060.1
AT3G52380.1
AT2G43910.2
AT2G19760.1
AT3G26450.2 <--
<--
= 同一样品,不同的名称。应该被视为一个。所以在之后忽略点和一个数字。
可以吗?
我无法做dput(head)
,因为它的数据集太大了。
我试图用这样的代码:
all_data = do.call(rbind, list_of_data)
Error in rbind(deparse.level, ...) :
The number of columns is not correct.
all_data$CleanedAccession = str_extract(all_data$Accession, "^[[:alnum:]]+")
all_data = subset(all_data, !duplicated(CleanedAccession))
我试着做了将近2周,我不能。所以请帮助我。
'rbind.fill(list_of_data)'会更快,'dplyr :: rbind_all(list_of_data)'会更快呢。 – hadley
都工作得很好,速度不够快。任何想法如何删除重复和“相同的名字”后点不同的数字。谢谢!任何建议我做错了应该downvote? – Rechlay
非常有用的答案(和高效!)。非常感谢。 –