我有一个包含两列的数据集,我想将第二列(由|分隔)分成许多列,其中每一列都有项的名称,观察值有计数。
foreach
我希望有一些列,列中每个项目的名称及其数量。例如,对于用户1,它将如下所示:
id column
1 a|b|a
2 a|b|c|d|e
3 a|c|c
我如何分离这些数据,以使值按原样分布在列中?
答案 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