假设我有一个数据框 D1
有 4 列:
-
F1
包含因素[A, B]
-
F2
包含因素[P, Q]
-
F3
包含因素[X, Y]
-
F4
包含数值
如何将其转换为新的三列数据框,D2
:
-
F1
和F2
和以前一样 -
F3
包含[X, Y, Z]
的所有级别上的前一行中所有值的平均值。并将其存储在新的数据框中。
我知道如何获得每个单因素水平的平均值,但我想对其他两个水平的叉积执行此操作。
示例 给定数据框:
F1 F2 F3 F4
A P X 2
A P Y 4
A Q X 3
A Q Y 5
B P X 1.5
B P Y 2.5
B Q X 0
B Q Y 1
将输出以下数据帧:
F1 F2 F3
A P 3
A Q 4
B P 2
B Q 0.5
理想情况下,无论涉及的因素有多少级别,这都应该有效
最佳答案
我们可以尝试
library(data.table)
setDT(df1)[, list(F3=mean(F4)) , .(F1, F2)]
# F1 F2 F3
#1: A P 3.0
#2: A Q 4.0
#3: B P 2.0
#4: B Q 0.5
library(dplyr)
df1 %>%
group_by(F1, F2) %>%
summarise(F3= mean(F4))
# F1 F2 F3
# (chr) (chr) (dbl)
#1 A P 3.0
#2 A Q 4.0
#3 B P 2.0
#4 B Q 0.5
aggregate(F4~F1+F2, df1, mean)
关于R - 总结其他两个因子水平的每个组合的因子水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34727659/