Mat*_*att 5
这是一个base R
解决方案:
df$Col3[df$Col2 == 'b'] <- NA
这是一个dplyr/tidyverse
解决方案:
library(dplyr)
df %>% mutate(Col3 = ifelse(Col2 == 'b',NA_character_,Col3))
(原始但效率较低的case_when
解决方案)
df %>%
mutate(Col3 = case_when(Col2 == 'b' ~ NA_character_,
TRUE ~ Col3))
这给了我们:
Col1 Col2 Col3
1 1 a 11%
2 2 a 12%
3 3 a 13%
4 4 b <NA>
5 5 b <NA>
6 6 c 16%
7 7 c 17%
8 8 d 18%
9 9 d 19%
10 10 d 20%
虽然我已经使用 `dplyr` 很多年了,但我之前还没有见过 `case_when()`。感谢分享。对于初学者来说不像`ifelse()`那么直观,但仍然非常方便了解。 (2认同)
更多推荐
发布评论