按变量名称聚合/合并数据帧列表 (R)

aggregate/ merge a list of dataframes by variable names (R)

提问人:Sulz 提问时间:6/1/2022 最后编辑:Sulz 更新时间:6/2/2022 访问量:92

问:

我有一个数据帧列表,看起来与此类似:

Date <-  c("Jan-22", "Dec-21", "Nov-21", "Sep-21")
A_B <- c(5,6,7,9)
A_C <- 1:4
B_D <- 4:7
df1 <- data.frame(Date, A_B, A_C, B_D)

Date <-  c("Jan-22", "Dec-21", "Nov-21", "Sep-21")
A_C <- 1:4
B_D <- 13:16
D_F <- c(5,6,7,8)
df2 <- data.frame(Date, A_C, B_D, D_F)

ListofDF <- list(df1, df2)

我的原始列表包含更多的数据帧,我的数据帧包含更多的变量,但都共享变量日期(作为字符)。现在我想将列表中所有不同的数据帧合并/聚合为一个。 因此,如果这些名称相同,它应该合并 Date 列并聚合(平均)变量值。

我的 disired 输出是这样的

Date <-  c("Jan-22", "Dec-21", "Nov-21", "Sep-21")
A_B <- c(5,6,7,9)
A_C <- 1:4
B_D <- c(8.5, 9.5, 10.5, 11.5)
D_F <- c(5,6,7,8)

df3 <- data.frame(Date,A_B, A_C, B_D, D_F)

所以相同的日期,但值的平均值,如果有相同的变量名称。

我希望我能澄清我需要什么,并在 andavance 中表示感谢。

编辑最后我找到了一个解决方案:

MyOutput1<- List1 %>% reduce(full_join, by = "Date")

List2 <- melt(MyOutput1, id.vars = "Date")

res <- aggregate(value ~ Date + variable, 
                 transform(List2, variable = sub("\\..*", '', variable)), mean, na.rm = TRUE)

我仍然认为这不是一个非常好的解决方案,有没有人对更好的解决方案有任何想法?

R 列表 合并 聚合

评论


答: 暂无答案