2016-11-26 34 views
0

如何有條件地舍入R中數據框中列的值?我需要從0到89而不是從90到100輪到較低的10。例如:R中的有條件數字

ID value 
A  15 
B  47 
C  91 
D  92 

必須被改變到

ID value 
A  10 
B  40 
C  91 
D  92 

所以,對於C/d和A/B不可更改捨去

任何想法?

感謝

+2

嘗試'$ DF值[DF $值<90] < - 地板(DF $值$ DF值<90]/10)* 10' – etienne

+0

神奇。感謝etienne !! – Selrac

回答

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

你可以這樣做:

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