2014-07-25 43 views
0

我是R的新用戶。我已經編寫了一個if函數,該函數爲我提供了長度超出設定長度範圍的數據的行。輸出呈現這樣的:根據R中的行名向列添加文本

1690 Field mouse 100 

(rowname,物種,長度)

我有一個質量柱(df$Quality),我想添加註釋,所有這些範圍之外。是否可以編寫一些基於行名的代碼,即在df$Quality列的這一行添加此文本"Query: size above range"

回答

0

也許這個例子可以幫助:

> df <- data.frame(Rowname=1:6, Species=letters[1:6],length=rep(c(99,101),times=3)) 
> df 
    Rowname Species length 
1  1  a  99 
2  2  b 101 
3  3  c  99 
4  4  d 101 
5  5  e  99 
6  6  f 101 
> df[df$length > 100,"Quality"] <- "Query: size above range" 
> df 
    Rowname Species length     Quality 
1  1  a  99     <NA> 
2  2  b 101 Query: size above range 
3  3  c  99     <NA> 
4  4  d 101 Query: size above range 
5  5  e  99     <NA> 
6  6  f 101 Query: size above range 

作爲替代方案的出發點,你也可以使用row.names(DF)做同樣的處理。

1

另一種解決方案,特別是如果你有一個大的數據集,是使用dplyr pacakge:

library(dplyr) 
mtcars %>% 
    mutate(Quality=ifelse(mpg>20, "Query: size above range", "Query: size below range")) 

    mpg cyl disp hp drat wt qsec vs am gear carb     Quality 
1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 Query: size above range 
2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 Query: size above range 
3 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1 Query: size above range 
4 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 Query: size above range 
5 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 Query: size below range 
...