将来自多个数据帧的特定行合并为一个数据帧

法兹利·富齐

我有20个数据帧(从dat.table1到dat.table20),如下所示:

> dat.table1

           Mean         SD          LB         UB
1  -3.251915678 0.09831336 -3.44979982 -3.0579865
2   0.529393596 0.09403571  0.34492156  0.7138352
3   0.437666296 0.09555116  0.25218768  0.6230282
4   0.386773612 0.09338021  0.20630132  0.5708987
5   0.259218892 0.10023005  0.06538325  0.4610775
6  -0.048387041 0.07875680 -0.20517662  0.1020621
7   0.086933460 0.08688864 -0.08462830  0.2565562
8   0.206235709 0.08200178  0.04710170  0.3658142
9   0.343474976 0.08204759  0.18539931  0.5062159
10 -0.354694572 0.08556581 -0.52609169 -0.1916891
11 -0.270542304 0.07349095 -0.41319234 -0.1291315
12  0.124547080 0.08323933 -0.04331230  0.2836064
13  0.005354652 0.10487004 -0.20677503  0.2061523
14  0.296131787 0.08235691  0.13605602  0.4593168
15  0.246056104 0.07536908  0.09803849  0.3959664
16  0.271052276 0.08347047  0.10437983  0.4354910
17 -0.005474416 0.09352408 -0.19415321  0.1736560

> dat.table2
          Mean         SD          LB         UB
1  -3.32373198 0.10477638 -3.53563786 -3.1241599
2   0.58316739 0.09466424  0.39814125  0.7690037
3   0.47869295 0.09768017  0.28395734  0.6701996
4   0.44479756 0.09489120  0.26172536  0.6336547
5   0.30072454 0.09964341  0.10674064  0.4980277
6  -0.05397720 0.07987092 -0.20952979  0.1038290
7   0.06624190 0.08466350 -0.10406855  0.2297836
8   0.18411601 0.07997405  0.02953943  0.3433614
9   0.35256600 0.07871029  0.20079165  0.5111548
10 -0.39566218 0.08567173 -0.56842809 -0.2281193
11 -0.29250153 0.07652253 -0.44428227 -0.1435696
12  0.07428006 0.08742497 -0.09829608  0.2419713
13 -0.03926006 0.11335154 -0.26894891  0.1716172
14  0.30625276 0.08212213  0.14760732  0.4674057
15  0.26511644 0.07824379  0.11330060  0.4216398
16  0.25476552 0.08699879  0.08646282  0.4240095
17 -0.05081449 0.10151042 -0.25162773  0.1451824

我的问题是如何从所有数据框中选择特定的行(例如第1行),然后将它们按行合并到新的数据框中?

谢谢。

阿克伦

最好先读取list而不是20在全局环境中创建/读取数据集,然后再执行此类操作的数据集。已经创建了datasets,您可以执行以下操作:

lst <- mget(ls(pattern='^dat.table\\d+'))
res <- do.call(`rbind`,lapply(lst,function(x) x[1,]))

row.names(res) <- NULL

对于two数据集,您将获得

res
#      Mean         SD        LB        UB
#1 -3.251916 0.09831336 -3.449800 -3.057987
#2 -3.323732 0.10477638 -3.535638 -3.124160

另一种选择是使用slicedplyr

library(dplyr)
library(tidyr)

d1 <- unnest(lst, grp)
group_by(d1, grp) %>%
                  slice(1)
#       grp      Mean         SD        LB        UB
#1 dat.table1 -3.251916 0.09831336 -3.449800 -3.057987
#2 dat.table2 -3.323732 0.10477638 -3.535638 -3.124160

或使用 data.table

library(data.table)
rbindlist(Map(cbind, grp=seq_along(lst), lst))[, head(.SD,1), by=grp]
#   grp      Mean         SD        LB        UB
#1:   1 -3.251916 0.09831336 -3.449800 -3.057987
#2:   2 -3.323732 0.10477638 -3.535638 -3.124160

更新

收到错误消息后,我怀疑column names任何lst元素都不相同。例如,如果我改变

 colnames(lst[[1]])[1] <- "Mean1"
 do.call(`rbind`,lapply(lst,function(x) x[1,]))
 #Error in match.names(clabs, names(xi)) : 
 #names do not match previous names

一种选择是,如果每个数据集的列顺序相似,则将列名更改为相同

  nm1 <- sapply(lst, function(x) colnames(x))[,2] #Because I changed the 1st element
  #column name
  lst1 <- lapply(lst, function(x) {colnames(x) <- nm1; x} )
  res <- do.call(`rbind`,lapply(lst1,function(x) x[1,]))
  row.names(res) <- NULL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将多个数据帧合并为一个数据帧

来自分类Dev

将多个数据帧拆分,应用并合并为一个数据帧

来自分类Dev

将多个生成的数据帧合并为一个数据帧

来自分类Dev

如何通过键将多个数据帧行合并为一个?

来自分类Dev

来自多个数据框列的值合并为一个向量

来自分类Dev

如何将两个数据帧中的行合并为 R 中的一个数据帧?

来自分类Dev

将来自多个数据帧的行包含到新的数据帧中

来自分类Dev

Python将来自不同文件的行合并为一个数据文件

来自分类Dev

将多个数据帧合并为一个-熊猫

来自分类Dev

R:将多个列表合并为一个数据帧

来自分类Dev

如何将来自多个数据库的数据合并到一个结果集中。(新旧系统)

来自分类Dev

MySQL将来自多个表(外键)的数据合并到一个数组中

来自分类Dev

将数据帧合并为一个数据帧,并将空数据帧保留为NA

来自分类Dev

当重复的行具有不同的值时,如何将重复的行合并为一个数据帧

来自分类Dev

来自多个数据帧的 Pandas 映射列

来自分类Dev

总结来自多个数据帧的向量

来自分类Dev

将两个数据帧合并为一个,同时保留原始行号

来自分类Dev

将 3 个数据帧合并为一个矩阵

来自分类Dev

Python Pandas合并两个数据帧,并将一个数据帧的一行映射到另一数据帧的所有行

来自分类Dev

R如何将一个数据帧的不同列合并为一个

来自分类Dev

将全局环境中的多个数据帧合并到一个文件

来自分类Dev

如何将一个Numpy数组合并到多个数据帧

来自分类Dev

如果特定列的值在两个数据帧中都匹配,则将一个数据帧的行复制到另一数据帧

来自分类Dev

根据来自另一个数据帧的值替换数据帧中的行元素

来自分类Dev

根据来自另一个数据帧的特定数值间隔对一个数据帧进行子集

来自分类Dev

在特定阈值下使用来自另一个数据帧的词频列表

来自分类Dev

将一个数据帧与另一个数据帧作为模板逐行合并

来自分类Dev

Pandas - 用来自另一个数据帧的值填充一个数据帧的每一行

来自分类Dev

如何在单独的数据帧中为每个值重复数据帧的每一行,然后将两者合并为一个数据帧?

Related 相关文章

  1. 1

    将多个数据帧合并为一个数据帧

  2. 2

    将多个数据帧拆分,应用并合并为一个数据帧

  3. 3

    将多个生成的数据帧合并为一个数据帧

  4. 4

    如何通过键将多个数据帧行合并为一个?

  5. 5

    来自多个数据框列的值合并为一个向量

  6. 6

    如何将两个数据帧中的行合并为 R 中的一个数据帧?

  7. 7

    将来自多个数据帧的行包含到新的数据帧中

  8. 8

    Python将来自不同文件的行合并为一个数据文件

  9. 9

    将多个数据帧合并为一个-熊猫

  10. 10

    R:将多个列表合并为一个数据帧

  11. 11

    如何将来自多个数据库的数据合并到一个结果集中。(新旧系统)

  12. 12

    MySQL将来自多个表(外键)的数据合并到一个数组中

  13. 13

    将数据帧合并为一个数据帧,并将空数据帧保留为NA

  14. 14

    当重复的行具有不同的值时,如何将重复的行合并为一个数据帧

  15. 15

    来自多个数据帧的 Pandas 映射列

  16. 16

    总结来自多个数据帧的向量

  17. 17

    将两个数据帧合并为一个,同时保留原始行号

  18. 18

    将 3 个数据帧合并为一个矩阵

  19. 19

    Python Pandas合并两个数据帧,并将一个数据帧的一行映射到另一数据帧的所有行

  20. 20

    R如何将一个数据帧的不同列合并为一个

  21. 21

    将全局环境中的多个数据帧合并到一个文件

  22. 22

    如何将一个Numpy数组合并到多个数据帧

  23. 23

    如果特定列的值在两个数据帧中都匹配,则将一个数据帧的行复制到另一数据帧

  24. 24

    根据来自另一个数据帧的值替换数据帧中的行元素

  25. 25

    根据来自另一个数据帧的特定数值间隔对一个数据帧进行子集

  26. 26

    在特定阈值下使用来自另一个数据帧的词频列表

  27. 27

    将一个数据帧与另一个数据帧作为模板逐行合并

  28. 28

    Pandas - 用来自另一个数据帧的值填充一个数据帧的每一行

  29. 29

    如何在单独的数据帧中为每个值重复数据帧的每一行,然后将两者合并为一个数据帧?

热门标签

归档