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不可更改捨去
任何想法?
感謝
如何有條件地舍入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不可更改捨去
任何想法?
感謝
你可以這樣說:
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
你可以這樣做:
df$value <- with(df, ifelse(value %in% c(0:89), value-(value%%10), value))
嘗試'$ DF值[DF $值<90] < - 地板(DF $值$ DF值<90]/10)* 10' – etienne
神奇。感謝etienne !! – Selrac