【发布时间】: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' & rowSums(is.na(cbind(col2, col3, col4)) == 0)), ]。