如果任何选定列为“是”,如何在 R 中创建一个输出为“是”的列

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

我正在使用一个公共数据集,该数据集有许多指定弱势社区 (DAC) 的来源。我想创建另一列,如果任何指定为“是”(即使其他来源表示“否”),该列将指示“是”。

我还想知道一个列名是否有问题,因为它包含括号 - DAC(CARB)_LIC(CARB) 我在网上找到了一些地方说反引号`在这种情况下有帮助。

对于第一个问题,我尝试了在网上搜索到的多种不同的解决方案,但到目前为止都没有效果。我找不到很多多个 OR 条件(使用 |)创建列的示例。

我正在尝试命名新列 DAC。 表明社区是否处于不利地位的栏是:

  • Disadvantged_Community_OEHHA - “是”或“否”全部大写
  • Disadvantged_Community_SB535 - “是”或“否”,仅第一个字母大写
  • DAC(CARB)_LIC(CARB) - “低收入和弱势群体”或“NA”
  • Disadvantged_Community_CE53 - “是”或“否”全部大写
  • Disadvantged_Community_CE54 - “是”或“否”全部大写

这是我尝试的最后一件事:

clean_transport_2022 <-transform(clean_transport_2022, DAC = ifelse(Disadvantaged_Community_OEHHA == "YES" | Disadvantaged_Community_SB535 == "Yes", `DAC(CARB)_LIC(CARB)` == "Low Income and Disadvantaged" | Disadvantaged_Community_CE53 = "YES" | Disadvantaged_Community_CE54 = "YES", "Yes", "No"))
r conditional-statements parentheses
1个回答
0
投票

当你想要跨列操作时,这并不容易,因为 R 被设计为逐列工作。这是使用基础 R 的解决方案(不导入库)。我使用

apply
进行行操作。

由于您没有提供任何数据样本,我创建了一个我认为与您的类似的合成数据框:

cond <- function() sample(c("yes", "no"), 10, replace = TRUE, prob = c(0.3, 0.7))

df <- data.frame(
  a = cond(),
  b = cond(),
  c = cond()
)

df$any_yes <- apply(df, 1, \(x) ifelse(any(x == "yes"), "yes", "no"))

df
#>      a   b   c any_yes
#> 1   no yes  no     yes
#> 2   no yes  no     yes
#> 3  yes  no  no     yes
#> 4   no  no  no      no
#> 5   no yes  no     yes
#> 6   no  no  no      no
#> 7   no  no  no      no
#> 8   no yes yes     yes
#> 9  yes  no  no     yes
#> 10 yes  no  no     yes

创建于 2024-02-25,使用 reprex v2.1.0

我建议阅读this以发布未来的问题。

© www.soinside.com 2019 - 2024. All rights reserved.