R 如何创建一个新变量,为其他变量上具有相同值组合的情况分配连续数字
我有一个包含110名参与者的数据集,他们在三个时间范围内多次回答了相同的问卷。每个时间段的会话数在参与者内部和参与者之间有所不同 我需要一个新变量,为参与者X在时间范围Y内完成问卷调查的会话分配连续的数字,从1到(参与者X在时间范围Y内完成问卷调查的会话数) 我有R 如何创建一个新变量,为其他变量上具有相同值组合的情况分配连续数字,r,R,我有一个包含110名参与者的数据集,他们在三个时间范围内多次回答了相同的问卷。每个时间段的会话数在参与者内部和参与者之间有所不同 我需要一个新变量,为参与者X在时间范围Y内完成问卷调查的会话分配连续的数字,从1到(参与者X在时间范围Y内完成问卷调查的会话数) 我有 participant timeframe date 1 1 2021-04-30 09:12:00 1 1
participant timeframe date
1 1 2021-04-30 09:12:00
1 1 2021-04-30 10:03:00
1 1 2021-05-02 09:20:00
2 1 2021-04-30 13:00:00
2 1 2021-05-02 12:13:00
1 2 2021-05-05 08:34:00
1 2 2021-05-06 14:15:00
2 2 2021-05-05 07:12:00
2 2 2021-05-05 14:13:00
2 2 2021-05-08 15:22:00
我需要:
participant timeframe date session per timeframe
1 1 2021-04-30 09:12:00 1
1 1 2021-04-30 10:03:00 2
1 1 2021-05-02 09:20:00 3
2 1 2021-04-30 13:00:00 1
2 1 2021-05-02 12:13:00 2
1 2 2021-05-05 08:34:00 1
1 2 2021-05-06 14:15:00 2
2 2 2021-05-05 07:12:00 1
2 2 2021-05-05 14:13:00 2
2 2 2021-05-08 15:22:00 3
希望有人能帮忙!提前非常感谢。这里有一个使用row_number()的tidyverse方法:
库(dplyr)
图书馆(tibble)
dat%
突变(日期=as.POSIXct(日期))
dat%>%
分组依据(参与者,时间范围)%>%
变异(会话=行号()
#>#tibble:10 x 4
#>#小组:参与者,时间框架[4]
#>参与者时间表日期会议
#>
#> 1 1 1 2021-04-30 09:12:00 1
#> 2 1 1 2021-04-30 10:03:00 2
#> 3 1 1 2021-05-02 09:20:00 3
#> 4 2 1 2021-04-30 13:00:00 1
#> 5 2 1 2021-05-02 12:13:00 2
#> 6 1 2 2021-05-05 08:34:00 1
#> 7 1 2 2021-05-06 14:15:00 2
#> 8 2 2 2021-05-05 07:12:00 1
#> 9 2 2 2021-05-05 14:13:00 2
#> 10 2 2 2021-05-08 15:22:00 3
由(v0.3.0)于2021-04-30创建,这里是一个使用行号()的tidyverse方法:
库(dplyr)
图书馆(tibble)
dat%
突变(日期=as.POSIXct(日期))
dat%>%
分组依据(参与者,时间范围)%>%
变异(会话=行号()
#>#tibble:10 x 4
#>#小组:参与者,时间框架[4]
#>参与者时间表日期会议
#>
#> 1 1 1 2021-04-30 09:12:00 1
#> 2 1 1 2021-04-30 10:03:00 2
#> 3 1 1 2021-05-02 09:20:00 3
#> 4 2 1 2021-04-30 13:00:00 1
#> 5 2 1 2021-05-02 12:13:00 2
#> 6 1 2 2021-05-05 08:34:00 1
#> 7 1 2 2021-05-06 14:15:00 2
#> 8 2 2 2021-05-05 07:12:00 1
#> 9 2 2 2021-05-05 14:13:00 2
#> 10 2 2 2021-05-08 15:22:00 3
由(v0.3.0)创建于2021-04-30。或者,使用
rleid
:
library(data.table)
df %>%
group_by(participant, timeframe) %>%
mutate(session_per_timeframe = rleid(date))
# A tibble: 10 x 4
# Groups: participant, timeframe [4]
participant timeframe date session_per_timeframe
<dbl> <dbl> <dttm> <int>
1 1 1 2021-04-30 09:12:00 1
2 1 1 2021-04-30 10:03:00 2
3 1 1 2021-05-02 09:20:00 3
4 2 1 2021-04-30 13:00:00 1
5 2 1 2021-05-02 12:13:00 2
6 1 2 2021-05-05 08:34:00 1
7 1 2 2021-05-06 14:15:00 2
8 2 2 2021-05-05 07:12:00 1
9 2 2 2021-05-05 14:13:00 2
10 2 2 2021-05-08 15:22:00 3
库(data.table)
df%>%
分组依据(参与者,时间范围)%>%
变异(会话/时间段=rleid(日期))
#一个tibble:10x4
#小组:参与者,时间框架[4]
参与者时间段日期会议每个时间段
1 1 1 2021-04-30 09:12:00 1
2 1 1 2021-04-30 10:03:00 2
3 1 1 2021-05-02 09:20:00 3
4 2 1 2021-04-30 13:00:00 1
5 2 1 2021-05-02 12:13:00 2
6 1 2 2021-05-05 08:34:00 1
7 1 2 2021-05-06 14:15:00 2
8 2 2 2021-05-05 07:12:00 1
9 2 2 2021-05-05 14:13:00 2
10 2 2 2021-05-08 15:22:00 3
或者,使用rleid
:
library(data.table)
df %>%
group_by(participant, timeframe) %>%
mutate(session_per_timeframe = rleid(date))
# A tibble: 10 x 4
# Groups: participant, timeframe [4]
participant timeframe date session_per_timeframe
<dbl> <dbl> <dttm> <int>
1 1 1 2021-04-30 09:12:00 1
2 1 1 2021-04-30 10:03:00 2
3 1 1 2021-05-02 09:20:00 3
4 2 1 2021-04-30 13:00:00 1
5 2 1 2021-05-02 12:13:00 2
6 1 2 2021-05-05 08:34:00 1
7 1 2 2021-05-06 14:15:00 2
8 2 2 2021-05-05 07:12:00 1
9 2 2 2021-05-05 14:13:00 2
10 2 2 2021-05-08 15:22:00 3
库(data.table)
df%>%
分组依据(参与者,时间范围)%>%
变异(会话/时间段=rleid(日期))
#一个tibble:10x4
#小组:参与者,时间框架[4]
参与者时间段日期会议每个时间段
1 1 1 2021-04-30 09:12:00 1
2 1 1 2021-04-30 10:03:00 2
3 1 1 2021-05-02 09:20:00 3
4 2 1 2021-04-30 13:00:00 1
5 2 1 2021-05-02 12:13:00 2
6 1 2 2021-05-05 08:34:00 1
7 1 2 2021-05-06 14:15:00 2
8 2 2 2021-05-05 07:12:00 1
9 2 2 2021-05-05 14:13:00 2
10 2 2 2021-05-08 15:22:00 3
我的答案
data %>% group_by(grp = data.table::rleid(participant)) %>%
mutate(session = row_number())
# A tibble: 10 x 5
# Groups: grp [4]
participant timeframe date grp session
<int> <int> <chr> <int> <int>
1 1 1 2021-04-30 09:12:00 1 1
2 1 1 2021-04-30 10:03:00 1 2
3 1 1 2021-05-02 09:20:00 1 3
4 2 1 2021-04-30 13:00:00 2 1
5 2 1 2021-05-02 12:13:00 2 2
6 1 2 2021-05-05 08:34:00 3 1
7 1 2 2021-05-06 14:15:00 3 2
8 2 2 2021-05-05 07:12:00 4 1
9 2 2 2021-05-05 14:13:00 4 2
10 2 2 2021-05-08 15:22:00 4 3
data%>%分组依据(grp=data.table::rleid(参与者))%>%
变异(会话=行号()
#一个tibble:10x5
#组别:grp[4]
参与者时间框架日期grp会议
1 1 1 2021-04-30 09:12:00 1 1
2 1 1 2021-04-30 10:03:00 1 2
3 1 1 2021-05-02 09:20:00 1 3
4 2 1 2021-04-30 13:00:00 2 1
5 2 1 2021-05-02 12:13:00 2 2
6 1 2 2021-05-05 08:34:00 3 1
7 1 2 2021-05-06 14:15:00 3 2
8 2 2 2021-05-05 07:12:00 4 1
9 2 2 2021-05-05 14:13:00 4 2
10 2 2 2021-05-08 15:22:00 4 3
我的答案
data %>% group_by(grp = data.table::rleid(participant)) %>%
mutate(session = row_number())
# A tibble: 10 x 5
# Groups: grp [4]
participant timeframe date grp session
<int> <int> <chr> <int> <int>
1 1 1 2021-04-30 09:12:00 1 1
2 1 1 2021-04-30 10:03:00 1 2
3 1 1 2021-05-02 09:20:00 1 3
4 2 1 2021-04-30 13:00:00 2 1
5 2 1 2021-05-02 12:13:00 2 2
6 1 2 2021-05-05 08:34:00 3 1
7 1 2 2021-05-06 14:15:00 3 2
8 2 2 2021-05-05 07:12:00 4 1
9 2 2 2021-05-05 14:13:00 4 2
10 2 2 2021-05-08 15:22:00 4 3
data%>%分组依据(grp=data.table::rleid(参与者))%>%
变异(会话=行号()
#一个tibble:10x5
#组别:grp[4]
参与者时间框架日期grp会议
1 1 1 2021-04-30 09:12:00 1 1
2 1 1 2021-04-30 10:03:00 1 2
3 1 1 2021-05-02 09:20:00 1 3
4 2 1 2021-04-30 13:00:00 2 1
5.