我有一个数据集df,看起来像这样
rel freq key
1.1 1.1 a
1 1 b
1 NA c
NA NA d
NA 0 e
NA 1 f
我想获得这个:
rel freq key
1.1 1.1 a
1 1 b
1 NA c
NA 1 f
基本上,我想摆脱freq
= 0的行或rel
和freq
都等于NA的行。
我尝试了
df <- df[df$freq!=0,]
过滤掉freq = 0,但这给了我一些问题
类似
library(dplyr)
df <- filter(df, freq != 0)
使用freq
= NA消除所有行
关于如何解决此问题的任何建议?
答案 0 :(得分:2)
尝试:
subset(df, !(freq == 0 & !is.na(freq) | (is.na(freq) & is.na(rel))))
输出:
rel freq key
1 1.1 1.1 a
2 1.0 1.0 b
3 1.0 NA c
6 NA 1.0 f
或在dplyr
中:
dplyr::filter(df, !(freq == 0 & !is.na(freq) | (is.na(freq) & is.na(rel))))
答案 1 :(得分:1)
df[!(!is.na(df$freq) & df$freq == 0 | (is.na(df$freq) & is.na(df$rel))),]
# rel freq key
# 1 1.1 1.1 a
# 2 1.0 1.0 b
# 3 1.0 NA c
# 6 NA 1.0 f
数据
df <- data.frame(rel = c(1.1, 1, 1, NA, NA, NA),
freq = c(1.1, 1, NA, NA, 0, 1),
key = letters[1:6])