【发布时间】:2017-03-07 14:29:33
【问题描述】:
我在 R 中有一个数据框。我从这个数据框中提取了一列来处理。该列有一个变量和一个频率。 例如:
Var1 Freq
1 1100 1697
2 1200 2551
3 1300 4064
4 1400 978
5 2100 1529
6 2200 2006
7 2300 2900
8 2400 1336
9 3100 1808
10 3200 6075
然后我对此进行了排序,最高的 5 个频率显示在顶部,其余的被分组在“其他”下,并将其转换为数据框,例如:
Var1 Freq
1 6000 23844
2 4800 23216
3 3300 8821
4 3200 6075
5 3400 4595
6 other 28737
因为我的目标是将这些数据放入饼图中以显示比例,然后我将数据框转换为表格使用
#convert dataframe into table
mytableSC <- table(expandRows(sectorcode_otherdf, "Freq"))
mytableSC 给我...
1100 1200 1300 1400 2100 2200 2300 2400 3100 3200 3250 3300 3350 3400 3500 4600 4700 4800 4900 6000
0 0 0 0 0 0 0 0 0 6075 0 8821 0 4595 0 0 0 23216 0 23844
7000 other
0 28737
我想删除包含 0 的列,并且我必须对初始数据框中的许多其他列执行此操作,因此我希望这可以自动化。我尝试了各种方法,但似乎都没有
例如:newtable <- mytableSC[,mytableSC[1,] != 0]
返回错误代码:[.default(mytableSC, 1, ) 中的错误:维数不正确
我可以使用newtable <- mytableSC[-c(1:9, 11, 13, 15:17, 19, 21)]
这实际上确实有效,但这将是一个漫长而乏味的过程,因为其他列有更多变量,而且我需要更长的时间来计算哪些列中有 0。
我也尝试过其他方法,但我不确定矩阵或数据框的代码是否能解决这个特定问题。
任何帮助或建议将不胜感激!
【问题讨论】:
-
newtable <- mytableSC[mytableSC!=0] -
如此简单的解决方案!效果很好,非常感谢!
-
是的,
mytableSC是一个命名向量(一维对象)。我的解决方案只是您的mytableSC[-c(1:9, 11, 13, 15:17, 19, 21)]的概括。给出错误的代码有太多逗号(用于索引多个维度)。 -
您可以在因子上使用
droplevels(或仅使用as.character)来消除非发生级别。如果你真的需要一个命名向量,你可以使用setNames而不是再次扩展和聚合。 -
为什么需要使用
table来创建饼图?你就不能pie(mydf$Freq, labels = mydf$Var1)吗?
标签: r dataframe dplyr multiple-columns