我有一个包含几列的数据框,需要计算变量相对于因子的平均值之间的差异。例如:
C1 C2
3 A
5 B
9 A
10 A
12 A
9 B
20 B
我想得到:
A 9
B 15
我试过
aggregate(C1 ~ C2, data = df, FUN = function(x) max()-min())
但它没有用。我觉得我应该使用sapply,但不知道如何。
答案 0 :(得分:1)
您已定义了匿名函数,但未指定在任何地方使用的变量。
将function(x) max() - min()
替换为function(x) max(x) - min(x)
。
换句话说:
aggregate(C1 ~ C2, mydf, function(x) max(x) - min(x))
# C2 C1
# 1 A 9
# 2 B 15
您还可以使用:aggregate(C1 ~ C2, mydf, function(x) diff(range(x)))
。