gpt4 book ai didi

r - 获取每行最频繁的值并说明关系

转载 作者:行者123 更新时间:2023-12-03 15:34:48 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Find the most frequent value by row

(4 个回答)


去年关闭。




样本数据:

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因为它是行中出现频率最高的值,忽略 NA s。
第 2 行取值 C因为它也是出现频率最高的值。
第 3 行与第 2 行相同。
第 4 行取值 D因为它是该行中唯一的值。
在第 5 行中,两个 EC计数为 2,但 E被选中是因为在 C 之前遇到过在行中。
第 6 行,与第 5 行相似,都是 CE计数为 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

最佳答案

我认为这实现了你正在寻找的东西。对于每一行,它创建一个每个字母的频率表并选择最大的,同时保留列的顺序。然后它返回该表中第一列的名称。
感谢 Henrik 提出改进建议。

df$New.Group <- apply(df[-1], 1, function(x) {
names(which.max(table(factor(x, unique(x)))))
})

df
#> 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

关于r - 获取每行最频繁的值并说明关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63020045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com