【发布时间】:2019-06-13 09:28:51
【问题描述】:
我想用 tidyverse::spread 将我的长数据帧重塑为宽格式。我应该怎么做才能包含转换的所有变量。
我的意见:
df <- tibble::tribble(
~respid, ~member_id, ~gender, ~edu, ~dob,
100L, 1L, 1L, 3L, 1978L,
100L, 2L, 1L, 3L, 1980L,
200L, 1L, 1L, 4L, 1974L,
200L, 2L, 2L, 5L, 1955L,
300L, 1L, 2L, 3L, 1998L,
300L, 2L, 1L, 4L, 1999L,
300L, 3L, 2L, 3L, 2001L
)
希望输出:
output <- tibble::tribble(
~respid, ~gender_1, ~edu_1, ~dob_1, ~gender_2, ~edu_2, ~dob_2, ~gender_3, ~edu_3, ~dob_3,
100L, 1L, 3L, 1978L, 1L, 3L, 1980L, NA, NA, NA,
200L, 1L, 4L, 1974L, 2L, 5L, 1955L, NA, NA, NA,
300L, 2L, 3L, 1998L, 1L, 4L, 1999L, 2L, 3L, 2001L
)
我在这里尝试过,但 row_number() 看起来不正确。
df %>%
group_by(member_id) %>%
mutate(t1 = paste0("gender_" , row_number())) %>%
spread(t1, gender)
【问题讨论】: