Проблема с функцией распространения {tidyr}, отбрасывающей строки - PullRequest
1 голос
/ 14 апреля 2020

При попытке создать фиктивные переменные возникает проблема, из-за которой строка почему-то объединяется. Это приводит к тому, что ряд ассоциируется с двумя группами, следовательно, не является фиктивной переменной. Следующий код воспроизводит проблему.

df = data.frame(group = c(4, 2, 3, 3, 4, 4), time = c(0.1, 0.2, 0.3, 0.3, 0.3, 0.4), age = c(65, 86, 49, 71, 71, 76), year = c(72, 74, 72, 76, 76, 77), death = c(1, 1, 1, 1, 1, 1))

df %>% mutate(i=1) %>% spread(group, i, fill=0)

После выполнения кода вы можете видеть, что есть объединенная строка, в результате чего субъект попадает в две группы одновременно. Это ошибка с кодом или ошибка с функцией?

1 Ответ

1 голос
/ 14 апреля 2020

Мы можем создать столбец с row_number(), потому что есть несколько повторяющихся строк

library(dplyr)
library(tidyr)
df %>% 
    mutate(i=1, rn = row_number()) %>% 
    spread(group, i, fill=0) %>%
    select(-rn)

Или используя pivot_wider

df %>%
   mutate(rn = row_number(), i = 1) %>%
   pivot_wider(names_from = group, values_from = i, values_fill = list(i = 0))
...