Разделить существующий столбец на несколько новых столбцов - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть такой фрейм данных:

original data frame

Я хотел бы получить такой результат:

expected result

Я написал этот код:

test$statetwentyeighteen = test$state[test$year=="2018"]

, но получаю неправильный результат:

wrong result

Не могли бы вы помочь узнать, как изменить код?


обновление:

У меня возникла новая проблема по этому вопросу. когда исходная таблица обновляется до этого: updated data frame

этот код больше не работает

test %>% group_by(name) %>% mutate(state_twentyeighteen = state[year == 2018])

вместо этого я получаю это сообщение об ошибке:

Error: Column `state_twentyeighteen` must be length 3 (the group size) or one, not 2

Не могли бы вы посмотреть, какие изменения следует внести в код?

1 Ответ

1 голос
/ 06 февраля 2020

Используя dplyr, вы можете сделать

library(dplyr)
test %>% group_by(name) %>% mutate(state_twentyeighteen = state[year == 2018])

и аналогично с data.table

library(data.table)
setDT(test)[, state_twentyeighteen := state[year == 2018], name]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...