Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于R中上一行的值更改列中的值_R_Rename - Fatal编程技术网

基于R中上一行的值更改列中的值

基于R中上一行的值更改列中的值,r,rename,R,Rename,我有一个看起来有点像这样的数据集: Time Event Value 1 right cue 4 2 right cue 5 3 reaction 6 4 reaction 7 5 reaction 5 6 left cue 7 7 left cue 4 8 reaction 2 我想分别得到左右反应的开

我有一个看起来有点像这样的数据集:

Time Event           Value
1     right cue       4
2     right cue       5
3     reaction        6
4     reaction        7
5     reaction        5
6     left cue        7
7     left cue        4
8     reaction        2
我想分别得到左右反应的开始和结束之间的平均值。我的问题是数据只是被标记为“反应”,没有右或左。如何根据前一行中的值(左或右提示)将“反应”重命名为“左/右反应”?

这是否有效:

library(dplyr)
library(tidyr)
library(stringr)
df %>% mutate(dir = str_extract(Event, 'right|left')) %>% 
fill(dir, .direction = 'down') %>% 
mutate(Event = case_when(str_detect(Event, 'left|right') ~ Event, 
                         TRUE ~ str_c(dir,Event, sep = ' '))) %>% select(-dir)

# A tibble: 8 x 3
   Time Event          Value
  <dbl> <chr>          <dbl>
1     1 right cue          4
2     2 right cue          5
3     3 right reaction     6
4     4 right reaction     7
5     5 right reaction     5
6     6 left cue           7
7     7 left cue           4
8     8 left reaction      2
库(dplyr)
图书馆(tidyr)
图书馆(stringr)
df%>%突变(dir=str_extract(事件“right | left”))%>%
填充(方向,.方向='向下')%>%
当(str_detect(Event,'left | right')~Event,
TRUE~str_c(dir,Event,sep='')%>%select(-dir)
#一个tibble:8x3
时间事件值
1右球杆4
2右球杆5
正确的反应
4正确的反应7
正确的反应
6左球杆7
7左球杆4
8左反应2

你能分享预期结果吗?是的,我基本上希望我的结果与上面一样,除了在时间3、4、5时不只是说“反应”,而是说“正确的反应”(因为它是在正确的提示之后出现的)。我想在时间8的“反应”中说“左反应”(因为它在左提示之后)。我知道当所有表示“反应”的行都表示它们是右反应还是左反应时,如何得到正确的平均值。事实并非如此。这很奇怪,因为我没有收到任何错误,代码似乎在运行,但我的数据保持不变。没有重命名任何内容。您的示例是否模拟了您的实际数据?因为对于你在问题中分享的数据,我们得到了预期的结果。啊,我发现了问题。它只是一个打字错误(字符串匹配中是大写而不是小写),现在可以使用了。谢谢。@user5740534,如果有效,您能接受答案吗?