Разделяйте ряд данных по разным столбцам с количеством каждого элемента - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть набор данных с двумя столбцами, где я хочу разделить второй (разделенный |) на множество столбцов, где каждый столбец имеет имя элемента, а наблюдение имеет счетчик.

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

Я хотел бы иметь столбцы с названием каждого элемента и его счет.например, для пользователя 1 это будет выглядеть следующим образом:

id    a    b     c     d     e
1     2    1     0     0     0
2     1    1     1     1     1
3     2    0     1     0     0

Как мне разделить эти данные так, чтобы значения были распределены в столбцах как таковых?

1 Ответ

2 голосов
/ 30 апреля 2019

Tidyverse подход, предполагая, что фрейм данных с именем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...