根据 R 中特定列中的值替换所有行值
Replace all row values according to a value in a specific column in R
假设我们有一个如下所示的数据集:
var
c1
c2
c3
a
TRUE
TRUE
TRUE
b
FALSE
TRUE
TRUE
c
TRUE
TRUE
TRUE
d
FALSE
TRUE
TRUE
我想根据 c1 列的 FALSE 值将所有行值(不是 var 列)替换为 NA。
理想情况下我想看起来像这样:
var
c1
c2
c3
a
TRUE
TRUE
TRUE
b
FALSE
NA
NA
c
TRUE
TRUE
TRUE
d
FALSE
NA
NA
var = c("a","b","c","d")
c1 = c(TRUE,FALSE,TRUE,FALSE)
c2 = c(TRUE,TRUE,TRUE,TRUE)
c3 = c(TRUE,TRUE,TRUE,TRUE)
data= tibble(var,c1,c2,c3);data
我如何使用 dplyr 包在 R 中执行此操作?
有帮助吗?
我们可以在 dplyr
中使用 across
- 循环 across
'c2'、'c3' 列,并使用 [=23= 中的逻辑列] 到 return 列的值,默认情况下,最后一个条件即 TRUE
将全部为 NA
library(dplyr)
data <- data %>%
mutate(across(c2:c3, ~ case_when(c1 ~ .x)))
-输出
data
# A tibble: 4 × 4
var c1 c2 c3
<chr> <lgl> <lgl> <lgl>
1 a TRUE TRUE TRUE
2 b FALSE NA NA
3 c TRUE TRUE TRUE
4 d FALSE NA NA
假设我们有一个如下所示的数据集:
var | c1 | c2 | c3 |
---|---|---|---|
a | TRUE | TRUE | TRUE |
b | FALSE | TRUE | TRUE |
c | TRUE | TRUE | TRUE |
d | FALSE | TRUE | TRUE |
我想根据 c1 列的 FALSE 值将所有行值(不是 var 列)替换为 NA。
理想情况下我想看起来像这样:
var | c1 | c2 | c3 |
---|---|---|---|
a | TRUE | TRUE | TRUE |
b | FALSE | NA | NA |
c | TRUE | TRUE | TRUE |
d | FALSE | NA | NA |
var = c("a","b","c","d")
c1 = c(TRUE,FALSE,TRUE,FALSE)
c2 = c(TRUE,TRUE,TRUE,TRUE)
c3 = c(TRUE,TRUE,TRUE,TRUE)
data= tibble(var,c1,c2,c3);data
我如何使用 dplyr 包在 R 中执行此操作? 有帮助吗?
我们可以在 dplyr
中使用 across
- 循环 across
'c2'、'c3' 列,并使用 [=23= 中的逻辑列] 到 return 列的值,默认情况下,最后一个条件即 TRUE
将全部为 NA
library(dplyr)
data <- data %>%
mutate(across(c2:c3, ~ case_when(c1 ~ .x)))
-输出
data
# A tibble: 4 × 4
var c1 c2 c3
<chr> <lgl> <lgl> <lgl>
1 a TRUE TRUE TRUE
2 b FALSE NA NA
3 c TRUE TRUE TRUE
4 d FALSE NA NA