我知道这是一个非常简单的问题,但是我很难过,并且似乎缺乏词汇来搜索有效的搜索栏。
我的数据框中充满了与此类似的数字(虽然不属于同一类)
Dat <- structure(c(9L, 9L, 3L, 3L, 2L, 9L, 10L, 5L, 6L, 2L, 4L, 6L,
10L, 2L, 9L, 0L, 1L, 8L, 9L, 7L, 7L, 4L, 4L, 3L, 4L, 7L, 7L,
1L, 0L, 3L, 6L, 10L, 8L, 3L, 0L, 7L, 7L, 1L, 2L, 8L, 5L, 7L,
7L, 8L, 2L, 1L, 10L, 3L, 0L, 2L, 7L, 0L, 0L, 7L, 9L, 8L, 9L,
0L, 4L, 4L, 5L, 6L, 6L, 2L, 4L, 1L, 6L, 2L, 4L, 7L, 5L, 2L, 7L,
4L, 8L, 3L, 3L, 2L, 5L, 1L, 1L, 3L, 8L, 0L, 1L, 8L, 8L, 1L, 1L,
0L, 4L, 4L, 4L, 5L, 6L, 9L, 5L, 2L, 6L, 3L), .Dim = c(10L, 10L
))
我想做的就是替换所有值&gt; 5带有1,所有值小于5带有0.我得到的帧为TRUE和FALSE,但似乎无法弄清楚如何更换东西。
Datlog <- Dat > 5
非常感谢任何帮助。谢谢。
答案 0 :(得分:2)
如果我正确地阅读了您的问题,您将自己寻找答案:
(Dat > 5) * 1
R中的 TRUE
和FALSE
分别等同于1
和0
。因此,更加语义正确的方法就是:
out <- as.numeric(Dat > 5)
dim(out) <- dim(Dat)
第二种方法需要采用两步法,因为当您使用as.numeric
时,原始数据的dim
会丢失。
使用不同值替换的一种方法是使用factor
:
out <- factor((Dat > 5), c(TRUE, FALSE), c("YES", "NO"))
dim(out) <- dim(Dat)
另一种方式是基本的子集和替换:
out <- Dat
out[out > 5] <- 999
out[out <= 5] <- 0
out