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)
| 归档时间: |
|
| 查看次数: |
5576 次 |
| 最近记录: |