将行标题转换为列并计算值

时间:2018-04-17 08:34:41

标签: r dataframe dplyr tidyr

我有一个类似于:

的数据框
ID     Fig1  Fig2   TER1   TER2    TER3
ERT-1  50     25    A      A       C
ERT-2  80     35    B      C       B
ERT-5  10     75    C      C       A

TER1TER2TER3中只有三个不同的值,想要知道与ID对应的每个值的计数。

我尝试了dcast,但它无法正常工作。

必填数据框:

XYZ    A    B    C
TER1   1    1    1
TER2   1    0    2
TER3   1    1    1

1 个答案:

答案 0 :(得分:1)

这是dplyr的想法。您首先需要gather您感兴趣的列,然后计数,即

library(dplyr)

df %>%
  gather(var, val, -c(1:3)) %>%
  select(var, val) %>%
  table() %>%
  as.data.frame.matrix() %>%
  rownames_to_column('XYZ')

给出,

   XYZ A B C
1 TER1 1 1 1
2 TER2 1 0 2
3 TER3 1 1 1