r - 合并列表的数据框并获取数据框的名称作为列
问题描述
我将列表中的所有数据框合并到一个数据框中。
列表中的数据框被称为
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
我怎样才能做到这一点?
解决方案
行名不能重复。所以最好的办法是将行名转换为列,然后使用 gsub 删除 .[0-9],即
df <- do.call(rbind, your_list)
df$list_id <- gsub('\\..*', '', rownames(df))
请注意,您可以使用dplyr
或data.table
版本的 rbinding 列表,该列表可以选择将列表名称包含为列,即
dplyr::bind_rows(your_list, .id = 'list_id')
data.table::rbindlist(your_list, idcol = 'list_id')
推荐阅读
- module - 无法在 Utop 中使用 Float 模块
- objective-c - 如何保存和读取钥匙串中的 RSA 密钥?
- javascript - 用于浏览器应用程序的 JavaScript 中的状态图 xml 处理器
- maven - 在提交 Maven 项目的 Apache Storm 拓扑时激活配置文件(无需重新编译)
- ruby - 为什么我会收到类型错误:如果 max == ele % 0,则无法将第 11 行的范围强制转换为整数?
- c - 哪个更快:静态数组与非静态数组?
- python - 将 pyqt 按钮移出按钮列表
- qt - 您如何检查您是否处于交互式 qmake 会话中?我想使用 qmake prompt()
- c - C中的打印函数mutex不能正常工作
- java - UTF-8 java 编码边缘情况