2014-07-25 44 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 
...