R - 测试值是否与上面单元格中的值相同

ode*_*hem 2 if-statement r dataframe na dplyr

我有以下 df:

name   color
A      red 
B      red
C      green
D      red
E      red
F      red
Run Code Online (Sandbox Code Playgroud)

我想测试“颜色”列中的值,看看它们是否与上面行中的值相同并写入新列......我可以使用以下方法:

> df$same <- ifelse(df$color == df$color[c(NA,1:(nrow(df)-1))], 1, 0)
Run Code Online (Sandbox Code Playgroud)

给我:

name   color  same
A      red      NA
B      red       1
C      green     0
D      red       0
E      red       1
F      red       1
Run Code Online (Sandbox Code Playgroud)

但是有没有更干净的方法来做到这一点?(我经常用这个)...

小智 5

添加到拉斐尔的答案,您可以使用ifelsewith dplyr::mutate

> dt <- data_frame(name = c('A', 'B', 'C', 'D', 'E', 'F'), color = c('red', 'red', 'green', 'red', 'red', 'red'))
> dt
# A tibble: 6 x 2
   name color
  <chr> <chr>
1     A   red
2     B   red
3     C green
4     D   red
5     E   red
6     F   red
> dt %>% mutate(same = ifelse(color == lag(color), 1, 0))
# A tibble: 6 x 3
   name color  same
  <chr> <chr> <dbl>
1     A   red    NA
2     B   red     1
3     C green     0
4     D   red     0
5     E   red     1
6     F   red     1
Run Code Online (Sandbox Code Playgroud)