R中有条件地舍入数字

时间:2016-11-26 13:32:04

标签: r conditional-statements rounding

如何有条件地舍入R中数据帧中列的值?我需要从0-89而不是90-100到下面的10。例如:

ID    value
A     10
B     40
C     91
D     92

必须更改为

arr[0].price

所以,C / D和A / B的变化没有向下调整

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:1)

你可以这样做:

df$value[df$value < 90] <- floor(df$value[df$value < 90] / 10) * 10

# ID value
# 1  A    10
# 2  B    40
# 3  C    91
# 4  D    92

提醒一下,这是您的数据:

df <- structure(list(ID = c("A", "B", "C", "D"), value = c(15L, 47L, 
91L, 92L)), .Names = c("ID", "value"), class = "data.frame", row.names = c(NA, 
-4L))

使用data.table的其他解决方案:

library(data.table)
setDT(df)[, value:= as.numeric(value)][value<90, value:= floor(value/10) * 10]

# ID value
# 1:  A    10
# 2:  B    40
# 3:  C    91
# 4:  D    92

答案 1 :(得分:1)

你可以这样做:

df$value <- with(df, ifelse(value %in% c(0:89), value-(value%%10), value))