如果列大于x

时间:2017-08-23 14:45:01

标签: r

以下是我正在使用的数据示例:

ID <- c(rep("A", 4), rep("B", 4))
LKUP <- c(2, 4, 10, 25, 17, 18, 6, 3)
df <- data.frame(ID, LKUP)

ID LKUP
A  2
A  4
A  10 
A  25
B  17
B  18
B  6
B  3

我想将LKUP列除以2,但前提是该值大于10。

输出应为:

ID LKUP
A  2
A  4
A  10 
A  12.5
B  8.5
B  9
B  6
B  3

ID列无关紧要,但我确实需要将其保留在最终输出中。

这看似简单(可能是),但我是R的新手,无法弄清楚如何去做。

感谢您的帮助。

编辑:如果我有任何方法可以改进这个问题,请告诉我。

3 个答案:

答案 0 :(得分:3)

df$LKUP[df$LKUP > 10] <- df$LKUP[df$LKUP > 10] / 2

答案 1 :(得分:2)

我们可以使用ifelse

df1$LKUP <- with(df1, ifelse(LKUP > 10, LKUP/2, LKUP))

data.table

library(data.table)
setDT(df1)[LKUP > 10, LKUP := LKUP/2][]

注意:确保'LKUP'为numeric

答案 2 :(得分:1)

使用dplyr的{​​{1}}

mutate()