对R中的if语句感到困惑:想要有条件的NA

问题描述 投票:1回答:2

我对R中的条件if语句感到困惑

我想要的是:

假设有两个变量;数据$ Export&Data $ Sales,

只有当一行的Data $ Export和Data $ Sales都具有值'0'时,我才希望从数据集中删除该行。或者,正如我所想的那样,将行中的任何变量设置为NA,因此将删除:“Data < - na.omit(Data)”。

因此,我想到了以下结构:

for (i in 1:nrow(Data)) { if ( (Data$Sales[i] == 0) &(Data$Export[i] == 0 ) ) {Data$Sales [i] <- NA }}
Data <- na.omit(Data)

但是,这不起作用,错误代码产生:缺少值需要TRUE / FALSE

提前感谢您提供的任何帮助。

r if-statement na
2个回答
0
投票

我认为你不需要使用条件if语句来这样做。使用diamonds data.frame,您可以删除变量yz中的0行,如下所示。感谢@Moody,@ Uwe和OP评论,它应该是|代替 &。

library(dplyr)
diamonds1 <-  diamonds %>% 
  dplyr::filter(y!=0 | z!=0)

同样可以应用于您的数据帧

data1 <- data %>% 
  dplyr::filter(Sales!=0 | Export!=0)

1
投票
Data2 <- Data[Data$Export !=0 | Data$Sales != 0,]

或者设置NA

 Data[Data$Export !=0 | Data$Sales != 0,] <- NA
© www.soinside.com 2019 - 2024. All rights reserved.