如何在R中添加新因素



我有一个数据框架:

a <- c("",1,2,3,2,2,1,3,"")
b <- c(1,2,3,4,5,3,8,2,8)
a1 <- as.factor(a)
f <- data.frame(x=a1,y=b)
f
 x y1 12 1 23 2 34 3 45 2 56 2 37 1 88 3 29 8

x列是一个因素,但是我想在空位置添加一个因子" 0",例如,我想使用if(is.na(f$x)) f$x <- 0,但它显示警告:

警告信息:在if(is.na(f $ x))f $ x 1中,只有第一个元素将被使用

我使用:

for(i in 1:nrow(f)){
 if(is.na(f$x[i])){
     f$x[i] <- 0
 }
}

但无关。我如何解决这个问题?谢谢您的帮助!

您不需要循环,一种更快的方法是

a <- c("",1,2,3,2,2,1,3,"")
> b <- c(1,2,3,4,5,3,8,2,8)
> a1 <- as.factor(a)
> f <- data.frame(x=a1,y=b)
> 
> f$x <- ifelse(f$x=="",0,f$x)
> f$x
[1] 0 2 3 4 3 3 2 4 0
> f$x <- as.factor(f$x)
> str(f)
'data.frame':   9 obs. of  2 variables:
 $ x: Factor w/ 4 levels "0","2","3","4": 1 2 3 4 3 3 2 4 1
 $ y: num  1 2 3 4 5 3 8 2 8

最新更新