首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并列表中的数据并获取数据文件的名称作为列

合并列表中的数据并获取数据文件的名称作为列
EN

Stack Overflow用户
提问于 2019-03-20 14:45:22
回答 2查看 43关注 0票数 0

我将一个列表中的所有数据帧合并到一个数据帧中。

列表中的数据被称为

代码语言:javascript
复制
TAI
NAM
HEE 

每个数据帧看起来都是这样的

代码语言:javascript
复制
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)合并时,我得到

代码语言:javascript
复制
         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

所以我得到了这个:

代码语言:javascript
复制
 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

我该怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-20 14:54:14

行名你不能有重复的。因此,最好的做法是将行名转换为列,然后使用gsub删除.0-9,即

代码语言:javascript
复制
df <- do.call(rbind, your_list)
df$list_id <- gsub('\\..*', '', rownames(df))

请注意,您可以使用dplyrdata.table版本的重新绑定列表,该列表可以选择将列表名称作为列,即

代码语言:javascript
复制
dplyr::bind_rows(your_list, .id = 'list_id')
data.table::rbindlist(your_list, idcol = 'list_id')
票数 2
EN

Stack Overflow用户

发布于 2019-03-20 14:52:45

您可以在通过do.call合并这三个列表之后添加一个带有列表名称的额外列

代码语言:javascript
复制
nameColumn <- data.frame(listName = c(rep(c('TAI','NAM','HEE'),
                                          c(length(TAI),length(NAM),length(HEE) ))
meanall <- cbind(meanall, nameColumn)

如果希望nameColumn成为第一列,只需将cbind中的参数切换到

代码语言:javascript
复制
meanall <- cbind(nameColumn, meanall)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55263559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档