替换R中数据框中某个范围内的值

时间:2018-03-14 07:13:48

标签: r

我根据每列中的值对数据框中的行进行了排名。Ranking 1-10. not every column in picture

我有代码将值替换为NA或1.但我无法弄清楚如何替换数字范围,例如3-6用1然后用NA替换其余部分(1-2和7-10)。

lag.rank <- as.matrix(lag.rank)
lag.rank[lag.rank > n] <- NA
lag.rank[lag.rank <= n] <- 1

目前它只替换n以上或以下的数字。有什么建议?我认为它应该相当简单?

2 个答案:

答案 0 :(得分:2)

这是你想要完成的事情吗?

> x <- sample(1:10,20, TRUE)
> x
 [1] 1 2 8 2 6 4 9 1 4 8 6 1 2 5 8 6 9 4 7 6
> x <- ifelse(x %in% c(3:6), 1, NA)
> x
 [1] NA NA NA NA  1  1 NA NA  1 NA  1 NA NA  1 NA  1 NA  1 NA  1

答案 1 :(得分:0)

如果您的数据不是整数而是数字,则可以使用dplyr包中的x <- ifelse(between(x,3,6), 1, NA)

months, counts =
  array_of_hash.
    flat_map(&:values).
    partition(&String.method(:===))