按条件从数据框中的值中减去
我想从我的数据框中选择一些列,并从满足条件的所有值中减去一个数字。就我而言,我想选择数据的 5:10 列,并从所有大于 5 的值中减去 10,同时保持所有其他值相同,然后保存此数据框。
我尝试过的解决方案(如下)只是从所有值中减去 10。我怎样才能做到这一点?非常感谢任何帮助。
data <- data.frame(replicate(10,sample(-1:10,1000,rep=TRUE))) #generate random data
# what i have tried so far
(data[, 5:10] > 5) - 10
回答
在基数 r 中,您可以使用 lapply
lapply(data[, 5:10], function(x) ifelse(x > 5, x - 10, x))
在 dplyr 你可以做
data <- data.frame(replicate(10,sample(-1:10,1000,rep=TRUE)))
library(dplyr, warn.conflicts = F)
data %>%
mutate(across(5:10, ~ifelse(.>5, . - 10, .)))
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 9 3 3 5 -2 -4 1 4 -4 -1
2 1 0 7 7 -2 3 2 -1 4 -3
3 2 -1 8 1 1 1 -4 0 0 3
4 9 9 4 6 -2 -3 3 0 0 0
5 7 -1 9 5 0 1 1 -1 -1 2
6 4 9 4 7 4 1 0 -1 -3 -1
.
.
.
.