我对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
提前感谢您提供的任何帮助。
我认为你不需要使用条件if语句来这样做。使用diamonds
data.frame,您可以删除变量y
和z
中的0行,如下所示。感谢@Moody,@ Uwe和OP评论,它应该是|代替 &。
library(dplyr)
diamonds1 <- diamonds %>%
dplyr::filter(y!=0 | z!=0)
同样可以应用于您的数据帧
data1 <- data %>%
dplyr::filter(Sales!=0 | Export!=0)
Data2 <- Data[Data$Export !=0 | Data$Sales != 0,]
或者设置NA
Data[Data$Export !=0 | Data$Sales != 0,] <- NA