如何有条件地舍入R中数据帧中列的值?我需要从0-89而不是90-100到下面的10。例如:
ID value
A 10
B 40
C 91
D 92
必须更改为
arr[0].price
所以,C / D和A / B的变化没有向下调整
有什么想法吗?
由于
答案 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))