使用 2 个或更多事件的数据创建新列,因此每个变量只有一行
Create new columns with data of 2 or more events so only one row per variable
我有一个列中多次列出的参与者列表,我希望他们只列出一次。他们都完成了不同次数的事件。如果他们没有重复,我需要一个列,其中包含第一次尝试的日期、第二次尝试的日期等。
df
participant date
1 a 2020-01-02
2 b 2020-09-25
3 c 2020-09-29
4 d 2020-10-07
5 d 2020-10-07
6 d 2020-11-08
7 a 2020-10-12
8 b 2020-10-13
participant date1 event1 date2 event2 date3 event3
1 a 2020-01-02 1 2020-10-12 2 NA NA
2 b 2020-09-25 1 2020-10-13 2 NA NA
3 c 2020-09-29 1 NA NA NA NA
4 d 2020-10-07 1 2020-11-07 2 2020-10-08 3
使用这个
library(dplyr)
library(tidyr)
df %>% group_by(participant) %>%
mutate(event = row_number(),
d3 = row_number()) %>%
pivot_wider(id_cols = participant, names_from = d3, values_from = c(date, event))
# A tibble: 4 x 7
# Groups: participant [4]
participant date_1 date_2 date_3 event_1 event_2 event_3
<chr> <chr> <chr> <chr> <int> <int> <int>
1 a 2020-01-02 2020-10-12 NA 1 2 NA
2 b 2020-09-25 2020-10-13 NA 1 2 NA
3 c 2020-09-29 NA NA 1 NA NA
4 d 2020-10-07 2020-10-07 2020-11-08 1 2 3
我有一个列中多次列出的参与者列表,我希望他们只列出一次。他们都完成了不同次数的事件。如果他们没有重复,我需要一个列,其中包含第一次尝试的日期、第二次尝试的日期等。
df
participant date
1 a 2020-01-02
2 b 2020-09-25
3 c 2020-09-29
4 d 2020-10-07
5 d 2020-10-07
6 d 2020-11-08
7 a 2020-10-12
8 b 2020-10-13
participant date1 event1 date2 event2 date3 event3
1 a 2020-01-02 1 2020-10-12 2 NA NA
2 b 2020-09-25 1 2020-10-13 2 NA NA
3 c 2020-09-29 1 NA NA NA NA
4 d 2020-10-07 1 2020-11-07 2 2020-10-08 3
使用这个
library(dplyr)
library(tidyr)
df %>% group_by(participant) %>%
mutate(event = row_number(),
d3 = row_number()) %>%
pivot_wider(id_cols = participant, names_from = d3, values_from = c(date, event))
# A tibble: 4 x 7
# Groups: participant [4]
participant date_1 date_2 date_3 event_1 event_2 event_3
<chr> <chr> <chr> <chr> <int> <int> <int>
1 a 2020-01-02 2020-10-12 NA 1 2 NA
2 b 2020-09-25 2020-10-13 NA 1 2 NA
3 c 2020-09-29 NA NA 1 NA NA
4 d 2020-10-07 2020-10-07 2020-11-08 1 2 3