【发布时间】:2020-06-15 11:54:37
【问题描述】:
我有一个小玩意...
# A tibble: 20 x 6
id X_1 Y_1 number X_2 Y_2
<int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 3 1 1 3
2 1 1 3 0 1 3
3 2 2 4 1 2 4
4 2 2 4 0 2 4
5 3 1 3 1 1 3
6 3 1 3 0 1 3
如果数字列中的值等于 1,我想让所有值都等于 NA,但仅限于以“_1”结尾的列(因此 X_1 和 Y_1)。
我也想在 _2 列中做相反的事情(即数字等于 0 的行变为 NA)。
它最终应该看起来像这样......
# A tibble: 20 x 6
id X_1 Y_1 number X_2 Y_2
<int> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 NA NA 1 1 3
2 1 1 3 0 1 3
3 2 NA NA 1 2 4
4 2 2 4 0 2 4
5 3 NA NA 1 1 3
6 3 1 3 0 1 3
我尝试了以下...
df %>% mutate_at(vars(contains("_1")), .funs = list(~if_else(number == 1, NA_real_, .)))
但这没有用。
我主要使用 tidyverse 工作,所以最好使用 tidyverse 解决方案。
【问题讨论】:
-
如果数字列等于 1 你的意思是行而不是列,对吧?您对
Y_1的预期输出也关闭了。值为 3 但被替换为NA?