分组和计数实例?

黄褐色

是否可以使用R(dplyr)对所有其他列的实例进行分组和计数?例如,以下数据框

x  a  b  c
1  0  0  0
1  1  0  1
1  2  2  1
2  1  2  1

转到此(注意:y是正在计数的值)

编辑:-解释了转换,x是我要分组的内容,对于每个分组的数字,我都想计算提到0和1和2的次数,因为在转换数据帧的第一行中,我们计算了多少x = 1在其他列(y)中等于0,所以0在a列中一次,在b列中两次,在c列中一次

x  y  a  b  c
1  0  1  2  1
1  1  1  0  2
1  2  1  1  0
2  1  1  0  1
2  2  0  1  0
保罗·希姆斯特拉

我会使用的组合gather,并spreadtidyr包和count来自dplyr

library(dplyr)
library(tidyr)
df = data.frame(x = c(1,1,1,2), a = c(0,1,2,1), b = c(0,0,2,2), c = c(0,1,1,1))
res = df %>% 
    gather(variable, value, -x) %>% 
    count(x, variable, value) %>% 
    spread(variable, n, fill = 0)
# Source: local data frame [5 x 5]
#
#   x value a b c
# 1 1     0 1 2 1
# 2 1     1 1 0 2
# 3 1     2 1 1 0
# 4 2     1 1 0 1
# 5 2     2 0 1 0

本质上,您首先将数据集的格式更改为:

head(df %>% 
    gather(variable, value, -x))
#  x variable value
#1 1        a     0
#2 1        a     1
#3 1        a     2
#4 2        a     1
#5 1        b     0
#6 1        b     0

它允许你使用count来获得对某些价值观是如何经常发生在列中的信息ac之后,您可以使用将数据集重新格式化为所需的格式spread

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章