bugfix> r > 投稿

次のようなデータセットがあります。

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

左右の反応の開始と終了の平均値を別々に取得したい。私の問題は、データが右または左ではなく「反応」とラベル付けされていることです。前の行の値(左または右のキュー)に基づいて、「reaction」の名前を「left/rightreaction」に変更するにはどうすればよいですか?

回答 1 件
  • これは機能しますか:

    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
    
    

あなたの答え