下午(或早上,晚上)
我正在尝试合并几个布局相似的.csv
文件,它们在一个列(character
)中有一个类,而在另一列中有很多(num
)。
当以data.frame
的示例导入时,将是:
print(one[1:5,])
X Class Abundance_inds
1 1 Chaetognath 2
2 2 Copepod_Calanoid_Acartia_spp 9
3 3 Copepod_Calanoid_Centropages_spp 4
4 4 Copepod_Calanoid_Temora_spp 1
5 5 Copepod_Calanoid_Unknown 55
class列(行数和顺序)根据找到的内容更改每个csv,我想根据class列绑定多个(30+)csv,我有以下(我确定是前一段时间工作的....):
DensityFiles <- list.files(CSVdirectory,
pattern = '.csv',
full.names = T)
Combined <- rbindlist(
lapply(
DensityFiles,
fread),
fill = TRUE,
use.names = TRUE)
这将产生以下结果:
str(Combined)
Classes ‘data.table’ and 'data.frame': 461 obs. of 3 variables:
不完全是我的追求!我正在寻找以下内容:
> print(example)
X Class CSV.NAME CSV.NAME.1
1 1 Bivalve_Larvae 1 3
2 2 Bryozoa_Larvae 4 6
3 3 Chaetognath NA 7
4 4 Cnidaria 1 8
5 5 Copepod_Calanoid_Acartia_spp 22 NA
6 6 Copepod_Calanoid_Calanus_spp 24 4
7 7 Copepod_Calanoid_Candacia_sp 5 3
8 8 Copepod_Calanoid_Centropages_spp 41 2
9 9 Copepod_Calanoid_Temora_spp 39 8
10 10 Copepod_Calanoid_Unknown 458 NA
11 11 Copepod_Cyclopoid_Corycaeus_spp 46 NA
12 12 Copepod_Cyclopoid_Oithona_spp NA 4
13 13 Copepod_Cyclopoid_Oncaea_spp NA 7
14 14 Copepod_Harpacticoid 36 NA
15 15 Copepod_Nauplii 12 9
使用时,我可以使用idcol = "origin"
将CSV名称添加到列标题中
data.table
库rbindlist
。但不确定是否适用于所有解决方案。
我四处游历,但大多数示例似乎都在处理一致数量的行,
任何帮助将不胜感激!
吉姆
答案 0 :(得分:0)
您可以使用readr
和bind_rows
library(dplyr)
library(readr)
df <- do.call(bind_rows, lapply(DensityFiles,read_csv))