【发布时间】:2020-05-05 09:32:53
【问题描述】:
如果这个问题有一个非常简单的解决方案,我们深表歉意。我是 R 和一般数据处理的新手。
我有一个包含许多因素的数据集,以及与之相关的计数。例如,
A 25
B 1
C 15
D 5
E 2
我的最终目标是使用数据框创建一个饼图。我想包括所有值,但要将低于某个计数/百分比的值分组到一个新类别或“其他”类别中。例如,如果阈值为 5:
A 25
C 15
Other 8
我可以使用subset() 函数对高于某个阈值的数据进行分组,但这只会返回我想在新表中使用的较高值,而且我不知道如何添加排除的值进入新数据框中的“其他”类别。
如果有人可以帮助我,我将不胜感激。过去有过一两个关于这个主题的类似帖子,但不是完全相同的情况,或者对我来说很难理解。
感谢您的宝贵时间!
数据图片:
【问题讨论】:
-
试试
i1 <- df1$Col2 < threshold; df1$Col1[i1] <- "Other"; aggregate(Col2 ~ Col1, df1, sum)(假设'Col1'是character类) -
感谢您的帮助。 Col1 我相信可能是一个因素?为了获取我正在使用的数据框,我获取了整洁的数据并按名称分组,然后使用 tally() 函数来获取计数。我已经尝试过您的解决方案并收到此错误消息:'In '[(*tmp*`, i1, value = c(NA, NA, 12L, NA, NA, NA, : invalid factor level, NA生成'。抱歉我的慢,我对R不是很熟悉。
-
您可以在下面查看我的解决方案。
forcats方法也适用于factor -
如果你想让基础 R 解决方案工作
levels(df1$Col1)[levels(df1$Col1) %in% df1$Col1[i1]] <- "Other"然后使用aggregate
标签: r group-by dplyr categories