【发布时间】:2020-10-29 15:34:12
【问题描述】:
我想找到一种方法在每次试验开始时将连续的相同值替换为 0,但是一旦值发生更改,它应该停止替换并保留该值。它应该发生在每个受试者的每次试验中。
例如,第一个受试者有多个试验(1、2 等)。在每个试验开始时,可能会有一些具有相同值的连续行(例如,1、1、1)。对于这些值,我想将它们替换为 0。但是,一旦值从 1 变为 0,我想在试验的其余部分保留这些值(例如,0、0、1)。
subject <- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
trial <- c(1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2)
value <- c(1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1)
df <- data.frame(subject, trial, value)
因此,从原始数据框中,我想有一个新变量(value_new),如下所示。
subject trial value value_new
1 1 1 1 0
2 1 1 1 0
3 1 1 1 0
4 1 1 0 0
5 1 1 0 0
6 1 1 1 1
7 1 2 1 0
8 1 2 1 0
9 1 2 0 0
10 1 2 1 1
11 1 2 1 1
12 1 2 1 1
我正在考虑使用 tidyr 和 group_by(subject, trial) 并使用条件语句改变一个新变量,但不知道该怎么做。我想我需要使用 rle(),但同样不知道如何将连续值替换为 0,一旦值发生更改就停止替换并保留其余值。
任何建议或意见将不胜感激!
【问题讨论】:
标签: r replace conditional-statements