根据R中的行名称向列添加文本

时间:2014-07-25 12:00:21

标签: r

我是R的新用户。我编写了一个if函数,它为我提供了长度超出设定长度范围的数据行。输出如下所示:

1690 Field mouse 100

(rowname,species,length)

我有一个质量列(df$Quality),我想为范围之外的所有人添加注释。是否可以编写一些基于行名称的代码,即在df$Quality列的这一行添加此文本"Query: size above range"

2 个答案:

答案 0 :(得分: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
...

答案 1 :(得分: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)进行类似的处理。