【问题标题】:Subsetting in R using multiple conditions (problems with NA values)使用多个条件在 R 中进行子集化(NA 值的问题)
【发布时间】:2023-02-26 21:12:00
【问题描述】:

大家,早安

我有一个包含 4 列的数据框。

我试图减去第 1 列中具有值 X 且在其他 3 列中具有 NA 值的所有观察值。

这是我到目前为止尝试过的代码:

df <-
df[!(
df$col1 == "X" &
is.na(df$col2) &
is.na(df$col3) &
is.na(df$col4),] 

子集化有效,但它也会创建具有新名称(NA.1、NA.2、NA.3 等)的观察值,所有四列都缺少值。

我不知道为什么不遵守第一个条件 (col1 == "X"),因为新的 df 包括在 col1 中具有 NA 值而不是必需的“X”值的观察值”。

你知道为什么会这样吗?

预先感谢您的帮助。

我在第一步中包含了所有内容,但当然会在必要时提供更多详细信息。

【问题讨论】:

  • 检查您的括号 - !(... 在您的示例中未关闭。否则,很难在不查看数据的情况下判断发生了什么。
  • 试试df[with(df, !col1 %in% 'X' &amp; rowSums(is.na(cbind(col2, col3, col4)) == 0)), ]

标签: r subset na


【解决方案1】:

感谢您的回答和想法。

该建议没有用,但我从中搜索并找到了一个可行的解决方案:

df <-
  df[with(df, !(col1 %in% "X" &
                    is.na(col2) &
                    is.na(col3) &
                    is.na(col4)
  )), ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2019-06-12
    相关资源
    最近更新 更多