【发布时间】:2021-11-24 10:56:45
【问题描述】:
我想从大型数据框中删除“FALSE”和“NAs”。我的输入看起来像,
| ID | Codes |
|---|---|
| 1 | TRUE |
| 2 | NA |
| 3 | FALSE |
| 4 | TRUE |
我需要的输出是,
| ID | Codes |
|---|---|
| 1 | TRUE |
| 4 | TRUE |
请建议在 R 中执行此操作的最佳方法 谢谢
【问题讨论】:
标签: r dataframe filter dplyr subset
我想从大型数据框中删除“FALSE”和“NAs”。我的输入看起来像,
| ID | Codes |
|---|---|
| 1 | TRUE |
| 2 | NA |
| 3 | FALSE |
| 4 | TRUE |
我需要的输出是,
| ID | Codes |
|---|---|
| 1 | TRUE |
| 4 | TRUE |
请建议在 R 中执行此操作的最佳方法 谢谢
【问题讨论】:
标签: r dataframe filter dplyr subset
我们可以只使用subset并指定Codes(假设它是逻辑列,NA将被删除)
subset(df1, Codes)
ID Codes
1 1 TRUE
4 4 TRUE
df1 <- structure(list(ID = 1:4, Codes = c(TRUE, NA, FALSE, TRUE)),
class = "data.frame", row.names = c(NA,
-4L))
【讨论】:
如果您的Codes 是字符类型:
library(dplyr)
df %>%
filter(Codes == "TRUE")
如果它们是合乎逻辑的:
df %>%
filter(Codes)
【讨论】:
== TRUE 部分。
== TRUE 更容易阅读/理解。
这是另一种基本的 R 方法:使用 complete.cases
df1$Codes[df1$Codes == FALSE] <- NA
df1[complete.cases(df1),]
输出:
ID Codes
1 1 TRUE
4 4 TRUE
【讨论】:
df1[df1$Codes & !is.na(df1$Codes),]。