R 使用列表和数据帧进行聚合,函数如何知道聚合级别?
我只是在使用聚合函数(参见下面的简短示例)。但聚合函数如何知道我的“随机数”中的哪个属于哪个国家?我的名单还保存着这些国家吗?还是只是程序问题R 使用列表和数据帧进行聚合,函数如何知道聚合级别?,r,aggregate,R,Aggregate,我只是在使用聚合函数(参见下面的简短示例)。但聚合函数如何知道我的“随机数”中的哪个属于哪个国家?我的名单还保存着这些国家吗?还是只是程序问题 df <- data.frame(country = c("Canada","Canada","Canada","US","US"), state = c("state1", "state2", "
df <- data.frame(country = c("Canada","Canada","Canada","US","US"),
state = c("state1", "state2", "state3", "state4", "state5"),
randomnumb = c(1:5)
)
list <- list(df$randomnumb)
dfaggregate <- aggregate(list,
by = list(country = df$country),
FUN = mean)
df这只是程序问题。让我们首先计算上述数据的结果:
aggregate(list,
by = list(country = df$country),
FUN = mean)
country X1.5
1 Canada 2.0
2 US 4.5
现在让我们把国家的顺序颠倒过来:
aggregate(list,
by = list(country = rev(df$country)),
FUN = mean)
country X1.5
1 Canada 4.0
2 US 1.5
正如你所看到的,结果是不同的;这是您对此data.frame的预期:
data.frame(country = c("US", "US", "Canada","Canada","Canada"),
state = c("state1", "state2", "state3", "state4", "state5"),
randomnumb = c(1:5))
所以这取决于顺序。正如Duck所说,尝试使用公式符号来明确:
aggregate(randomnumb~country, data = df, mean)
country randomnumb
1 Canada 2.0
2 US 4.5
您最好使用公式表示法aggregate(randomnub~country,data=df,sum)
,因为有时列表可能会令人困惑@Duck,但是要非常小心,因为运行mean
在列表和公式样式aggregate
之间有不同的默认值:。@Parfait Nice info!谢谢