用每一项的计数将不同行上的数据行分开

时间:2019-04-30 05:09:17

标签: r dataframe

我有一个包含两列的数据集,我想将第二列(由|分隔)分成许多列,其中每一列都有项的名称,观察值有计数。

foreach

我希望有一些列,列中每个项目的名称及其数量。例如,对于用户1,它将如下所示:

id     column
1       a|b|a
2       a|b|c|d|e
3       a|c|c

我如何分离这些数据,以使值按原样分布在列中?

1 个答案:

答案 0 :(得分:2)

一种整理方法,假设数据帧名为mydata

library(dplyr)
library(tidyr)

mydata %>% 
  separate_rows(column, sep = "\\|") %>% 
  count(id, column) %>% 
  spread(column, n) %>% 
  replace(., is.na(.), 0)  # or just spread(column, n, fill = 0)

结果:

# A tibble: 3 x 6
     id     a     b     c     d     e
  <int> <int> <dbl> <dbl> <dbl> <dbl>
1     1     2     1     0     0     0
2     2     1     1     1     1     1
3     3     1     0     2     0     0