【发布时间】:2019-10-08 06:48:24
【问题描述】:
我有一个具有这种结构的 R 数据框(虚拟示例):
df
A B C D
1 a 3 5
1 a 5 3
1 b 2 8
2 a 4 7
2 a 6 5
2 b 4 3
...
“A”、“B”、“C”和“D”是列标题。
我想重塑这个数据框,以便通过“A”和“B”的每个级别获得“C”和“D”的平均值。
所以我想要的最终产品是:
new_df
A BaC BbC BaD BbD
1 4 2 4 8
2 5 4 6 3
我设法以非常粗暴的方式做到了:
spread_df_C <- spread(df, B, C)
aggregated_df_C <- aggregate(spread_df$a, list(spread_df$A), mean)
spread_df_D <- spread(df, B, D)
aggregated_df_D <- aggregate(spread_df$a, list(spread_df$A), mean)
new_df <- merge(aggregated_df_C, aggregated_df_D, by=c("A", "A")
这最终会让我得到最终产品,但我正在费力地计算每个级别的平均值。我需要为多个级别执行此操作,并且必须有更优雅的执行方式。
请各位高手帮忙
【问题讨论】:
标签: r dataframe aggregate reshape data-manipulation