我试图获取特定值(此处为RATIO1和RATIO 2)为NaN的所有行保留它们.
考虑像数据框一样
data.frame(ID=c(1,2,4,6,7),RATIO1=c(NaN,NaN,0.2,9.5,6),
RATIO2=c(NaN,NaN,0.5,NaN,6), RATIO3=c(0.3,0.2,4,NaN,5))
ID RATIO1 RATIO2 RATIO3
1 1 NaN NaN 0.3
2 2 NaN NaN 0.2
3 4 0.2 0.5 4
4 6 9.5 NaN NaN
5 7 6 6 5
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样
ID RATIO1 RATIO2 RATIO3
1 1 NaN NaN 0.3
2 2 NaN NaN 0.2
Run Code Online (Sandbox Code Playgroud)
我可以使用is.na()或complete.cases()< - 这将删除行.
谢谢
这是一种可能性,apply()用于一次检查一行并确定它们是否完全由NaNs 组成:
df[apply(df[2:3], 1, function(X) all(is.nan(X))),]
# ID RATIO1 RATIO2 RATIO3
# 1 1 NaN NaN 0.3
# 2 2 NaN NaN 0.2
Run Code Online (Sandbox Code Playgroud)
假设你真的在处理NaN而不是一些任意的字符值,试试这样的事情:
dat <- data.frame(ID=c(1,2,4,6,7),RATIO1=c(NaN,NaN,0.2,9.5,6), RATIO2=c(NaN,NaN,0.5,NaN,6), RATIO3=c(0.3,0.2,4,NaN,5))
> dat[is.nan(dat$RATIO1) & is.nan(dat$RATIO2),]
ID RATIO1 RATIO2 RATIO3
1 1 NaN NaN 0.3
2 2 NaN NaN 0.2
Run Code Online (Sandbox Code Playgroud)
is.finite 如果你经常这样做,也可能会有用.
| 归档时间: |
|
| 查看次数: |
4987 次 |
| 最近记录: |