r - 向上添加列计数,直到另一列中的值发生变化
问题描述
我有一个名为 data_clean 的 df:
> head(data_clean)
participant type target_onset key_resp.rt central_size
1 1010 gap 0.4 0.3260000 0.15
2 1010 gap 0.1 0.3380001 0.15
3 1010 overlap 0 0.4480000 0.10
4 1010 gap 0.2 0.3940001 0.10
5 1010 gap 0.1 0.3980000 0.10
6 1010 gap 0.2 0.4990001 0.10
我想添加一个名为 trial_num 的列,每行 +=1,直到参与者列号发生变化。然后它应该重新开始。所以如果下一个参与者在 6 次试验后开始,它看起来像这样:
participant type target_onset key_resp.rt central_size trial_num
1 1010 gap 0.4 0.3260000 0.15 1
2 1010 gap 0.1 0.3380001 0.15 2
3 1010 overlap 0 0.4480000 0.10 3
4 1010 gap 0.2 0.3940001 0.10 4
5 1010 gap 0.1 0.3980000 0.10 5
6 1010 gap 0.2 0.4990001 0.10 6
7 1011 gap 0.4 0.3260000 0.15 1
8 1011 gap 0.1 0.3380001 0.15 2
9 1011 overlap 0 0.4480000 0.10 3
任何建议都非常感谢。谢谢。
解决方案
row_number()
在您的 id 上按组应用任务后尝试使用group_by()
. 这里的代码使用dplyr
:
library(dplyr)
#Code
new <- data_clean%>%
group_by(participant) %>%
mutate(trial_num=row_number())
输出:
# A tibble: 9 x 6
# Groups: participant [2]
participant type target_onset key_resp.rt central_size trial_num
<int> <chr> <dbl> <dbl> <dbl> <int>
1 1010 gap 0.4 0.326 0.15 1
2 1010 gap 0.1 0.338 0.15 2
3 1010 overlap 0 0.448 0.1 3
4 1010 gap 0.2 0.394 0.1 4
5 1010 gap 0.1 0.398 0.1 5
6 1010 gap 0.2 0.499 0.1 6
7 1011 gap 0.4 0.326 0.15 1
8 1011 gap 0.1 0.338 0.15 2
9 1011 overlap 0 0.448 0.1 3
使用的一些数据:
#Data
data_clean <- structure(list(participant = c(1010L, 1010L, 1010L, 1010L, 1010L,
1010L, 1011L, 1011L, 1011L), type = c("gap", "gap", "overlap",
"gap", "gap", "gap", "gap", "gap", "overlap"), target_onset = c(0.4,
0.1, 0, 0.2, 0.1, 0.2, 0.4, 0.1, 0), key_resp.rt = c(0.326, 0.3380001,
0.448, 0.3940001, 0.398, 0.4990001, 0.326, 0.3380001, 0.448),
central_size = c(0.15, 0.15, 0.1, 0.1, 0.1, 0.1, 0.15, 0.15,
0.1)), row.names = c("1", "2", "3", "4", "5", "6", "7", "8",
"9"), class = "data.frame")
推荐阅读
- java - ORA-01000: 超出 Java 应用程序的最大打开游标
- node.js - 如何开始将 Alexa 与 NodeJS 代码集成?
- angular - 第一次加载表单页面时要清除的Angular 6表单字段数据
- mongodb - 错误:无法添加用户:没有名为 root@test 的角色
- python - 将数据从 Python Web 套接字客户端发送到 Django 通道
- r - ggplot2 将多种图表类型组合成单个图表
- azure - 我可以通过 arm 模板在现有命名空间中创建新的事件中心吗?
- php - 使用 curl 接收数据时如何修复失败
- spring-boot - 如何为以下代码编写junit
- laravel - Sql 查询到 Laravel 查询