r - 如何创建一个新变量,为其他变量上具有相同值组合的案例分配连续数字
问题描述
我有一个包含 110 名参与者的数据集,他们在三个时间范围内的多个会话中回答了相同的问卷。每个时间段的会话数在参与者内部和参与者之间有所不同。
我需要一个新变量,它将连续数字分配给参与者 X 在时间范围 Y 内从 1 到(参与者 X 在时间范围 Y 内完成问卷的会话数)完成问卷调查。
例子:我有
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 方法:
library(dplyr)
library(tibble)
dat <- tribble(~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") %>%
mutate(date = as.POSIXct(date))
dat %>%
group_by(participant, timeframe) %>%
mutate(session = row_number())
#> # A tibble: 10 x 4
#> # Groups: participant, timeframe [4]
#> participant timeframe date session
#> <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
由reprex 包于 2021-04-30 创建(v0.3.0)
推荐阅读
- javascript - 如何在 vue3js 中使用 html2pdf 从 html 中制作 pdf 文件?
- youtube - 无论如何我可以通过 VPN 使用 YouTube API
- azure-data-factory - 如何使用 Azure 数据工厂中的每个活动合并文件
- reportingservices-2005 - SSRS WCF Web 服务显示端点 = 地址 = 错误 CS0103:当前上下文中不存在名称“_address”
- android - OkHttp Http2 音频流,我可以控制发送的字节数吗?
- kubernetes - Kubernetes 限制范围覆盖
- android - 更改语言环境后未在 android 中调用 onConfigurationChanged 方法
- mysql - Sequelize - dateonly vs date format
- unity3d - 如何将 SVG 导入 Unity 并仍然保留组(图层)?
- spring - Spring-WS:通过两个不同的端点路由 SOAP 请求