gpt4 book ai didi

r - 按不同 id 合并数据框列表

转载 作者:行者123 更新时间:2023-12-04 16:26:53 25 4
gpt4 key购买 nike

我有带有数据帧的可变长度列表。我想使用随 df 变化的指定列名或索引将每个列表中的 dfs 合并为单个 df。这是一个有 3 个 dfs 的例子

my.list <- list(
data.frame(a = 1:10, b = letters[1:10], c = 101:110),
data.frame(d = 6:15, e = letters[1:10], f = 1:10),
data.frame(l = 2:11, m = letters[11:20], o = 1:10))

我想通过 ids 中提到的每个 df 的特定列进行合并
ids <- c('a', 'f', 'l')

得到看起来像的东西
id  b   c   d   e   m   o
1 a 101 6 a NA NA
2 b 102 7 b k 1
3 c 103 8 c l 2
4 d 104 9 d m 3
5 e 105 10 e n 4
6 f 106 11 f o 5
7 g 107 12 g p 6
8 h 108 13 h q 7
9 i 109 14 i r 8
10 j 110 15 j s 9
11 NA NA NA NA t 10

我试过用 merge 做到这一点和/或 Reduce , 但未能传递 ids

最佳答案

我们可以更改 names独一无二的list通过将与“ids”对应的列名更改为“id”,然后执行 Reducemerge

lst <- Map(function(x, y) {names(x)[match(y, names(x))] <- 'id'; x}, my.list, ids)
Reduce(function(...) merge(..., by = 'id', all = TRUE), lst)
# id b c d e m o
#1 1 a 101 6 a <NA> NA
#2 2 b 102 7 b k 1
#3 3 c 103 8 c l 2
#4 4 d 104 9 d m 3
#5 5 e 105 10 e n 4
#6 6 f 106 11 f o 5
#7 7 g 107 12 g p 6
#8 8 h 108 13 h q 7
#9 9 i 109 14 i r 8
#10 10 j 110 15 j s 9
#11 11 <NA> NA NA <NA> t 10

关于r - 按不同 id 合并数据框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45237530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com