【发布时间】:2015-10-30 02:33:00
【问题描述】:
我在 R 中有以下数据框
DeptNumber EmployeeTypeId
1 10
1 11
1 11
2 23
2 23
2 30
2 40
3 45
3 46
我需要生成另一个带有新列MaxEmployeeType 的数据框,其中应包含EmployeeTypeId,对于给定的DeptNumber,重复次数最多。输出应该如下
DeptNumber MaxEmployeeType
1 11
2 23
3 45
在departmentNumber=3 的情况下,有一个平局,但可以提出任何一个选项。我不确定执行此操作的最佳方法是什么?任何帮助表示赞赏。
一个类似的问题已经发布了
How to aggregate data in R with mode (most common) value for each row?
但它有一个限制,只能使用 plyr & lubridate。如果可能的话,我想要一个最好的解决方案,而不是局限于这两个包。这个问题甚至被否决,可能是因为它可能是家庭作业。
【问题讨论】:
-
aggregate(EmployeeTypeId ~ ., dd, function(x) x[duplicated(x) + (sum(duplicated(x)) == 0)][1]) -
或
aggregate(EmployeeTypeId ~ ., dd, function(x) if (length(y <- x[duplicated(x)])) y else x[1])