提问人:at. 提问时间:5/2/2023 最后编辑:thelatemailat. 更新时间:5/2/2023 访问量:63
R 分组依据,其中包含与最常见因子关联的每个分组元素
R group by with each grouped element associated with most common factor
问:
我想按列分组,并为每个唯一因素选择最常见的因数。例如:a
b
a
tibble(a = c(1,1,1,2,2,2), b = factor(c('cat', 'dog', 'cat', 'cat', 'dog', 'dog'))) %>%
reframe(b = most_common(b), .by = a)
我希望它产生:
一个 | b |
---|---|
1 | 猫 |
2 | 狗 |
但是,该函数不存在。是否有有效的 R 函数用于此目的?这一定是数据清理的一个非常普遍的需求(我需要它)。我搜索并找到了实现功能的人。我可以使用其中之一,但它们似乎效率低下。有没有更好的方法来解决这个整体问题?most_common
mode
答:
-1赞
ThomasIsCoding
5/2/2023
#1
我们可以使用table
+ max.col
d <- table(df)
data.frame(
a = as.numeric(row.names(d)),
b = colnames(d)[max.col(d)]
)
这给了
a b
1 1 cat
2 2 dog
或如下所述使用dplyr
group_by(a) %>%
summarise(b = names(which.max(table(b))))
这给了
# A tibble: 2 × 2
a b
<dbl> <chr>
1 1 cat
2 2 dog
评论
0赞
at.
5/2/2023
我喜欢您的第二个解决方案,但已弃用。显然,应该改用。summarise
reframe
0赞
thelatemail
5/2/2023
@at。- 不,没有被弃用。不推荐使用它返回 0 或 >1 行。查看 dplyr.tidyverse.org/reference/summarise.htmlsummarise
reframe
评论
mode
fmode
r-faq