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将TRUE
和FALSE
分别视为1
和0
。
如果你想遵循同样的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)