IF声明构build

在excel中,如果old_column为空,则可以创build一个new_column并将其定义为0,如果old_column不为空,则为1。

new_column=IF(ISBLANK([@[old_column]]),0,1) 

任何人都可以想到一个有效的方法来做这个r的数据框。 说数据框中的一列被称为old_column,我想用上面的描述添加一个new_column到data_frame。

我试过这个:

 mydf$old_column[is.na(mydf$old_column] <- 0 mydf$old_column[!is.na(mydf$old_column] <- 1 

但它给了我这个错误:

无效因子水平,NA产生错误。

 mydf$new_column <- as.integer(!is.na(mydf$old_column) 

你可能甚至不需要as.integer() is.na()返回一个布尔向量,R将TRUEFALSE分别视为10

如果你想遵循同样的scheme比在Excel中,那么你正在寻找ifelse:

 mydf$new_column <- ifelse(is.na(mydf$old_column),0,1) 

另外,在原始代码中,请注意将值赋给old_column,所以第二个命令将不会find任何NA,并将在任何地方分配1。

因素问题(在这里猜测),可能与如何将数据从csv或xls文件加载到R有关。许多方法都有一个参数stringsAsFactors,您可能希望将其设置为False,否则可能会遇到此types的错误。 提供代码,我们可以帮助你。 例:

 mydf <- read.csv("myfile.csv",stringsAsFactors = F)