【发布时间】:2020-09-19 20:32:28
【问题描述】:
我正在尝试将 dplyr 中的 slice_max 函数和 forcats 中的 fct_other 函数结合起来,以基于数字变量获取数据帧的前 n 个切片,但我不想丢失非前 n 个因子。如果需要,我希望将这些其他因素指定为“其他”,以便在此之后进行总结或计数。
例如,使用类似这样的数据框:
df <- data.frame(acron = c("AA", "BB", "CC", "DD", "EE", "FF", "GG"), value = c(6, 4, 1, 10, 3, 1, 1))
如果我想要前 3 个主题的“价值”,我可以使用下一个代码:
df %>%
slice_max(value, n = 3)
得到下一个结果:
acron 值
DD 10
AA 6
BB 4
但我想指定删除“acron”的因素“其他”类似于使用来自 forcats 的函数 fct_other 获得的结果。我试过这段代码,但它不起作用:
df %>%
mutate(acron = fct_other(acron, keep = slice_max(value, n = 3), other_level = "Others"))
有什么建议可以得到这样的东西吗?:
acron 值
DD 10
AA 6
BB 4
其他 3
其他 1
其他 1
其他 1
甚至像这样:
acron 值
DD 10
AA 6
BB 4
其他 6
【问题讨论】: