我将一个列表中的所有数据帧合并到一个数据帧中。
列表中的数据被称为
TAI
NAM
HEE 每个数据帧看起来都是这样的
Yr-M Compound1 Compound 2
2015-01 0.002 0.15
2015-02 0.004 0.02
2015-03 0.01 0.09当我将所有数据文件与meanall<-do.call(rbind, meaneach)合并时,我得到
Yr-M Compound1 Compound2
TAI.1 2015-01 0.002 0.15
TAI.2 2015-02 0.004 0.02
TAI.3 2015-03 0.01 0.09
.
.
.
NAM.1 2015-01 0.03 0.4
NAM.2 2015-02 0.001 0.005我想得到一个列,列上列表的名称,而不是行名(如上面所示),如果没有编号(TAI.1,TAI.2.),我只想要名称TAI
所以我得到了这个:
List Yr-M Compound1 Compound2
TAI 2015-01 0.002 0.15
TAI 2015-02 0.004 0.02
TAI 2015-03 0.01 0.09
.
.
.
NAM 2015-01 0.03 0.4
NAM 2015-02 0.001 0.005我该怎么做?
发布于 2019-03-20 14:54:14
行名你不能有重复的。因此,最好的做法是将行名转换为列,然后使用gsub删除.0-9,即
df <- do.call(rbind, your_list)
df$list_id <- gsub('\\..*', '', rownames(df))请注意,您可以使用dplyr或data.table版本的重新绑定列表,该列表可以选择将列表名称作为列,即
dplyr::bind_rows(your_list, .id = 'list_id')
data.table::rbindlist(your_list, idcol = 'list_id')发布于 2019-03-20 14:52:45
您可以在通过do.call合并这三个列表之后添加一个带有列表名称的额外列
nameColumn <- data.frame(listName = c(rep(c('TAI','NAM','HEE'),
c(length(TAI),length(NAM),length(HEE) ))
meanall <- cbind(meanall, nameColumn)如果希望nameColumn成为第一列,只需将cbind中的参数切换到
meanall <- cbind(nameColumn, meanall)https://stackoverflow.com/questions/55263559
复制相似问题