例如,我有一个数据集
Data <- data.frame(
groupname = as.factor(sample(c("a", "b", "c"), 10, replace = TRUE)),
someuser = sample(c("x", "y", "z"), 10, replace = TRUE))
groupname someuser
1 a x
2 b y
3 a x
4 a y
5 c z
6 b x
7 b x
8 c x
9 c y
10 c x
Run Code Online (Sandbox Code Playgroud)
如何汇总数据,以便获得:
groupname someuser
a x
b x
c x
Run Code Online (Sandbox Code Playgroud)
这是每个组名最常见的值。
PS:根据我的设置,我只能使用2个包-plyr和lubridate
您可以结合使用此功能来查找聚合模式。
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
aggregate(someuser ~ groupname, Data, Mode)
groupname someuser
1 a x
2 b x
3 c x
Run Code Online (Sandbox Code Playgroud)
请注意,如果出现平局,它将仅返回第一个值。