R:如何用指示原始列是否包含任何数据的新列替换数据框中的多个列

问题描述 投票:0回答:2

我有一个类似于下面简化的数据框。我希望用新列 (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
r dplyr na
2个回答
0
投票

请尝试以下代码

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

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
© www.soinside.com 2019 - 2024. All rights reserved.