首页 > 解决方案 > R - 按变量出现

问题描述

我有一个名为限制的数据集,我知道人们是否可以采取行动(用叉子吃饭,起床......)。

每个数字代表每个人可以做某项动作的难度级别(1:没有难度,2:有些难度,3:高难度,4:根本无法进行该动作)

我最感兴趣的是4级。

数据集看起来像这样(有更多变量)

> head(restrictions)
  RATOI_I RAHAB_I RANOU_I RAELI_I RAACH_I RAREP_I RAMEN_I RAADM_I RAMED_I RADPI_I RADPE_I RABUS_I  
1       4       4       1       1       4       4       4       4       1       1       4       4              
2       4       3       3       1       4       4       4       4       4       2       4       4           

我想知道有多少人在 RATOI_I 中处于 4 级(我可以做到),对于这些人在 RATOI_I 中处于 4 级,有多少人在 RAHAB_I 和每个变量中处于 4 级。

我查看了函数 sapply() 但我完全迷失了,我不知道如何使用它以及使用哪个函数。或者我必须使用 group_by() 函数吗?

提前致谢!

标签: r

解决方案


您可以使用applywith sumusingrestrictions==4来计算每列等于 4 的数字。

apply(restrictions==4, 2, sum)
#colSums(restrictions==4) #Alternative
#RATOI_I RAHAB_I RANOU_I RAELI_I RAACH_I RAREP_I RAMEN_I RAADM_I RAMED_I RADPI_I RADPE_I RABUS_I 
#      2       1       0       0       2       2       2       2       1       0       2       2 

或者仅适用于那些拥有restrictions$RATOI_I==4(感谢@Daniel-o 指出这一点):

apply(restrictions[restrictions$RATOI_I==4]==4, 2, sum)
#colSums(restrictions[restrictions$RATOI_I==4]==4)
#RATOI_I RAHAB_I RANOU_I RAELI_I RAACH_I RAREP_I RAMEN_I RAADM_I RAMED_I RADPI_I RADPE_I RABUS_I 
#      2       1       0       0       2       2       2       2       1       0       2       2 

推荐阅读