提问人:Sulz 提问时间:6/1/2022 最后编辑:Sulz 更新时间:6/2/2022 访问量:92
按变量名称聚合/合并数据帧列表 (R)
aggregate/ merge a list of dataframes by variable names (R)
问:
我有一个数据帧列表,看起来与此类似:
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)
我仍然认为这不是一个非常好的解决方案,有没有人对更好的解决方案有任何想法?
答: 暂无答案
上一个:计算所有变量与所有其他变量的差值
评论