我有一个类似于下面简化的数据框。我希望用新列 (new_column) 替换 A:C 列,该新列为有数据的行提供 1,为没有数据的行提供 NA。
A B C
NA NA NA
1 0 0
0 1 0
0 0 1
结果看起来像这样:
new_column
NA
1
1
1
我尝试在 dplyr 中使用 mutate 命令
library(dplyr)
df %>%
mutate(new_column=apply(is.na(df[,c("A","B","C")]), 1, all),
.keep = "unused",
.before = "D" ) #where D is the next column in the data frame
请尝试以下代码
data %>% rowwise() %>% mutate(new=rowSums(across(c(A:C))))
# A tibble: 5 × 4
# Rowwise:
A B C new
<dbl> <dbl> <dbl> <dbl>
1 NA NA NA NA
2 1 0 0 1
3 0 1 0 1
4 0 0 1 1
5 0 0 0 0
您可以使用
if_all()
:
library(dplyr)
df %>%
mutate(new_column = if_else(if_all(A:C, is.na), NA, 1),
.keep = "unused")
# new_column
# 1 NA
# 2 1
# 3 1
# 4 1