【发布时间】:2024-03-09 12:45:02
【问题描述】:
这可能很简单,但我已经查看了该站点上的答案,但没有找到解决方案。我有一个数据框,我想删除所有等于 1 的观察值。在我原来的 df 中有超过 90 列。
我已尝试使用 lapply 函数和过滤,但我无法使其工作:
df <- data.frame(x1 = c('0','1', '0', '1', '1'),
x2 = c('1','0', '1', '1', '0'),
x3 = c('1','0', '1', '1', '1'))
df[] <- lapply(df, function(x) subset(df, x==0 ))
df<- as.data.frame(lapply(df, function(x) subset(df, x==0 )))
df[] <- lapply(df, function(x) df[!(df$x ==1),])
library(dplyr)
df %>% filter(!all(df == 1))
df<-df[!(df ==1),]
我的预期输出是
x2 x3
0 0
【问题讨论】:
-
如果有缺失值会发生什么,例如一行是
c(1, 1, NA, 1)? -
好问题。我还没有检查 NA 的数据,但这可能是一种可能性。如果可能的话,我想保留 NA 值,因为目的是为了测试
-
您的预期输出实际上应该是什么样子?
-
谢谢@jay.sf,我在问题中添加了预期的输出
-
你能解释一下如何得到预期的输出吗?这两个零是什么?
标签: r dataframe conditional-statements filtering subset