【发布时间】:2020-11-11 03:50:37
【问题描述】:
样本数据:
df <- data.frame("ID" = 1:6,
"Group1" = c("A", NA, "C", NA, "E", "C"),
"Group2" = c("E", "C", "C", NA, "E", "E"),
"Group3" = c("A", "A", NA, NA, "C", NA),
"Group4" = c(NA, "C", NA, "D", "C", NA),
"Group5" = c("A", "D", NA, NA, NA, NA))
在每一行中,我想计算每个值的数量并将最常见的值存储在一个新变量New.Group 中。在平局的情况下,应选择行中的第一个值。应用于示例的逻辑:
New.Group 的第 1 行取值 A,因为它是该行中出现频率最高的值,忽略 NAs。
第 2 行取值 C,因为它也是最常见的值。
第 3 行与第 2 行相同。
第 4 行取值 D,因为它是该行中唯一的值。
在第 5 行中,E 和 C 的计数均为 2,但选择了 E,因为它在行中的 C 之前遇到。
第 6 行,与第 5 行类似,C 和 E 的计数均为 1,但选择了 C,因为它在行中的 E 之前遇到。
想要的输出:
ID Group1 Group2 Group3 Group4 Group5 New.Group
1 1 A E A <NA> A A
2 2 <NA> C A C D C
3 3 C C <NA> <NA> <NA> C
4 4 <NA> <NA> <NA> D <NA> D
5 5 E E C C <NA> E
6 6 C E <NA> <NA> <NA> C
【问题讨论】:
-
列优先级究竟是如何定义的?
-
第一列比第二列重要,第二列比第三列重要,以此类推。
-
相关,但似乎没有处理“如果有关系,请选择第一个值”:Find the most frequent value by row
-
@Henrik 对于我们的一个内部包,我制作了
rowMode-function,您可以在其中设置函数应该如何处理关联和缺失值。 Posted it here. -
感谢@Jaap 的提醒。不错!