2017-02-23 55 views
0

添加一個新的因素我有一個數據幀:如何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 y 
1 1 
2 1 2 
3 2 3 
4 3 4 
5 2 5 
6 2 3 
7 1 8 
8 3 2 
9 8 

的X列是一個因素,但我希望有一個因素「0」添加到空的地方,例如,我想用if(is.na(f$x)) f$x <- 0,但它顯示警告:

 
Warning message: 
In if (is.na(f$x)) f$x 1 and only the first element will be used

我用:

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

但它沒有任何關係。我該如何解決這個問題?感謝您的幫助!

+0

因此,它是您試圖這樣做是爲了一個更大的數據幀? –

+0

是的,這是一個大數據框架。 – littlely

+0

我把這個因子改成了數值,然後把0加到空位,然後把它改成因子,它可以工作,但是你有更好的主意嗎?(這個因子是起源於中文字符,並且我改變了它以數字因子。) – littlely

回答

0

你不需要一個for循環,更快的方法是通過

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