gpt4 book ai didi

r - 从数据框列表中将选定的数据框添加到一起

转载 作者:行者123 更新时间:2023-12-01 03:35:22 25 4
gpt4 key购买 nike

我在尝试将我的微观解决方案应用于宏观时遇到了大问题。我想编写一个函数,允许我自动将特定数据帧的所有值加在一起。

首先,我创建了所有数据框的列表:

> lst
$data001
A B C D E
X 10 30 50 70
Y 20 40 60 80

$data002
A B C D E
X 10 30 50 70
Y 20 40 60 80

$data003
A B C D E
X 10 30 50 70
Y 20 40 60 80
Z 20 40 60 80

$data004
A B C D E
X 10 30 50 70
Y 20 40 60 80
Z 20 40 60 80
V 20 40 60 80

$data005
A B C D E
Q 10 30 50 70

$data006
A B C D E
X 10 30 50 70
Y 20 40 60 80

$data007
A B C D E
X 10 30 50 70
Y 20 40 60 80

$data008
A B C D E
X 10 30 50 70
Y 20 40 60 80

$data09
A B C D E
X 11 33 55 77
Y 22 44 66 88

$data010
A B C D E
X 10 30 50 70
Y 20 40 60 80

其次,我已经确定了我想要将哪些数据帧加在一起(加 1 到 1 和加 2 到 2 等)。在这个例子中,有 10 个数据帧按以下顺序组织,在 lst 内。 :
 [1] 1 1 2 2 2 2 2 2 3 2

手动添加所有“一个”我看起来像这样:
> ddply(rbind(lst[[1]],lst[[2]]), "A", numcolwise(sum))

A B C D E
X 20 60 100 140
Y 40 80 120 160

手动添加所有“两个”我看起来像这样:
 A   B   C   D    E
X 60 180 300 420
Y 120 240 360 480
Z 40 80 120 160
V 20 40 60 80
Q 10 30 50 70

但是,我只是不知道如何编写一个循环来创建列表,在这个例子中,3 个数据帧是对所选数据帧求和的结果。

先感谢您!

最佳答案

我们可以使用 data.table

 library(data.table)
lapply(split(seq_along(lst), v1), function(i)
rbindlist(lst[i], fill=TRUE)[
, lapply(.SD, sum), A, .SDcols= B:E])
#$`1`
# A B C D E
#1: X 20 60 100 140
#2: Y 40 80 120 160

#$`2`
# A B C D E
#1: X 60 180 300 420
#2: Y 120 240 360 480
#3: Z 40 80 120 160
#4: V 20 40 60 80
#5: Q 10 30 50 70

#$`3`
# A B C D E
#1: X 11 33 55 77
#2: Y 22 44 66 88

数据
v1 <-  c(1, 1, 2, 2, 2, 2, 2, 2, 3, 2)

关于r - 从数据框列表中将选定的数据框添加到一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35339052/

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