我正在使用R,我需要选择任何值为&gt;的行。 0.7和任何其他值< 0.4。 两个值应满足此要求。如果行中有另一个不适用于此值的值,我仍然想要使用此行。
Df的:
A B C D E
1 NA 0.5 0.6 NA NA
2 NA 0.2 0.8 NA NA
3 NA 0.2 NA 0.6 NA
4 NA 0.6 0.1 0.8 NA
输出应如下所示:
A B C D E
2 NA 0.2 0.8 NA NA
4 NA 0.6 0.1 0.8 NA
答案 0 :(得分:1)
尝试(感谢@akrun的编辑建议)
df[!!rowSums(df > .7, na.rm = TRUE) & !!rowSums(df < 0.4, na.rm = TRUE), ]
## A B C D E
## 2 NA 0.2 0.8 NA NA
## 4 NA 0.6 0.1 0.8 NA
或(更糟糕的选择)
df[apply(df, 1, function(x) any(x > .7, na.rm = TRUE) & any(x < .4, na.rm = TRUE)), ]
# A B C D E
# 2 NA 0.2 0.8 NA NA
# 4 NA 0.6 0.1 0.8 NA
答案 1 :(得分:1)
您也可以尝试:
Df[intersect(which(Df >0.7, arr.ind=TRUE)[,1] , which(Df <0.4,arr.ind=TRUE)[,1]),]
# A B C D E
#2 NA 0.2 0.8 NA NA
#4 NA 0.6 0.1 0.8 NA
Df <- structure(list(A = c(NA, NA, NA, NA), B = c(0.5, 0.2, 0.2, 0.6
), C = c(0.6, 0.8, NA, 0.1), D = c(NA, NA, 0.6, 0.8), E = c(NA,
NA, NA, NA)), .Names = c("A", "B", "C", "D", "E"), class = "data.frame", row.names = c("1",
"2", "3", "4"))