需要计算表格中的项目

时间:2017-11-23 19:42:44

标签: r

我有这个DF(部分显示)在第一列有15个类别,每个单元格的数字在1到15之间。实际上这只是一个小例子,15个类别在其他列中重复不同的数字< / p>

我需要的是有一个16x15的矩阵,其中包含值的出现次数。

我可以用IFs等旧方式对此进行编程,但我很遗憾地使用R

我希望这很清楚。

欢迎任何建议

按要求编辑(道歉不明确)

RESULTADOS DF

 PREOCUPACIÓN       13       15      4        4        1      8        3        1
     TRISTEZA       15       13      2        5        4     14        6        6
      PERDIDA        4       11      3        2       14     12        7       10
     ANGUSTIA       14       10     11        3        2     13        1        2
   IMPOTENCIA        1        8      9        6        5      5        5        4
       MUERTE        2        1     14       14       15      6       13       15
        ENOJO       12        7     10        8        6      7       12        5
   INJUSTICIA        3        9     12        7       12      2       14       13
     AUSENCIA       11       14      6        1        8     11       11       11
        DOLOR        5       12      5        9        7     15        8        8
   CORRUPCIÓN        8        6     15       13       11      3       15       12
        MIEDO        9        3     13       10        3     10        9        3
    SECUESTRO       10        2      1       11        9      4        4       14
  INSEGURIDAD        7        4      7       15       10      1       10        9
DESESPERACIÓN        6        5      8       12       13      9        2        7
 PREOCUPACIÓN       14        2      5        4        3      8        8        7
     TRISTEZA        5        7      1        8        7      9       13        9
      PERDIDA        2        6      6       12        2     10        6       10
     ANGUSTIA       13        3     15        9        8     11        7        4
   IMPOTENCIA       12       11      7        5       10     12       12        1
       MUERTE        3       10     14        2       13     13        9        2
        ENOJO       11        5     10       10       11      7       11        5
   INJUSTICIA        7       13      2        6       15     14       10        6
     AUSENCIA        8        1      9       11        1      6        4       12
        DOLOR        6        8      8       13        9      3        3        3
   CORRUPCIÓN       10       15      3       14       14     15        5       11
        MIEDO        9        4     13       15        4      4       14        8
    SECUESTRO        4        9     11        1       12      5       15       13
  INSEGURIDAD        1       12      4        7        6      1        1       14
DESESPERACIÓN       15       14     12        3        5      2        2       15
 PREOCUPACIÓN       13       10      4        1        7      4       11        2
     TRISTEZA       15       11     11        2        9      3       12        8
      PERDIDA        2       15      7        4       15      7        3       13
     ANGUSTIA        8       13      5        3        6      1        7        1
   IMPOTENCIA       10        4      8        5       12     10       13        3
       MUERTE        7        8     15       15        3      6        6        9
        ENOJO       14       12     12       10       10      8       15       10
   INJUSTICIA        4        1     13        6        1      9        2        6
     AUSENCIA       12        9      1        7        8     11        1       14
        DOLOR        9       14      2       12        5      2       14       12
   CORRUPCIÓN        3        6     14       14       14     14        5       15
        MIEDO        6        2      3        9        2      5       10        7
    SECUESTRO        1        3      6        8       13     15        4        5
  INSEGURIDAD        5        5      9       11        4     13        8        4
 DESESPERACIÓN       11        7     10       13       11     12        9       11
...

我需要的结果是:

                1    2    3    4    5    6    7    8    9   10   11   12   13   14   15
PREOCUPACION    3    2    2    5    1    0    2    3    0    1    1    0    2    0    1
TRISTEZA        1    2    1    1    2    2    2    2    3    0    2    1    1    1    2

1 个答案:

答案 0 :(得分:0)

在每一行上使用 apply ,转换为 factor 并获取

res <-
  cbind.data.frame(name = df1[, 1],
                   t(apply(df1[, -1], 1, function(i){
                     table(factor(i, levels = 1:15))
                   })))
res

#             name 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# 1   PREOCUPACIÓN 2 1 2 2 0 2 0 1 0  0  0  0  1  0  1
# 2       TRISTEZA 0 2 0 1 2 3 0 0 1  0  0  0  1  1  1
# 3        PERDIDA 0 1 1 1 0 0 1 0 0  1  2  2  1  2  0
# 4       ANGUSTIA 2 2 1 1 0 0 0 0 1  1  1  0  1  1  1
# ...

修改:如果您在多行上重复了名称,请尝试以下操作。在第1列拆分数据帧,然后遍历每个拆分数据帧并获得每个因子级别的计数。

res <- t(data.frame(
  lapply(split(df1, df1$V1), function(i){
    as.numeric(table(factor(unlist(i[-1, ]), levels = 1:15)))
  })))

res
#               [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
# ANGUSTIA         4    0    2    1    1    1    2    2    1     0     1     0     2     0     1
# AUSENCIA         4    2    0    1    0    1    1    2    2     0     2     2     0     1     0
# CORRUPCIÓN       0    0    4    0    2    1    0    0    0     1     1     0     0     6     3
# DESESPERACIÓN    0    2    1    2    1    0    1    0    1     1     3     2     1     1     2
# ...