确定data.frame中最接近指定值的条目
我有一个输入“值”,我想从确定data.frame中最接近指定值的条目,r,dataframe,R,Dataframe,我有一个输入“值”,我想从R value = 20003 资料 Min_Benefs Max_Benefs MSR_Min MSR_Max 5000 5999 0.039 0.036 6000 6999 0.036 0.034 7000 7999 0.034 0.032 8000 8999 0.032 0.031
R
value = 20003
资料
Min_Benefs Max_Benefs MSR_Min MSR_Max
5000 5999 0.039 0.036
6000 6999 0.036 0.034
7000 7999 0.034 0.032
8000 8999 0.032 0.031
9000 9999 0.031 0.03
10000 14999 0.03 0.027
15000 19999 0.027 0.025
20000 49999 0.025 0.022
50000 59999 0.022 0.02
60000 0.02 0.02
预期产量
20000
尝试:
closestLoc = which(min(abs(data[,c(1,2)]-value)))
closestVal = data[,c(1,2)][which(min(abs(data[,c(1,2)]-value)))]
因此,我想从数据框“data”的前两列中找出最接近的输入“value”数。提前感谢。您可以使用
unlist()
从两列中创建一个向量,然后在其中找到最接近的值:
vec <- unlist(df[,c(1,2)]) # create vector
vec[which.min(abs(vec - value))] # find nearest value
#Min_Benefs8
# 20000
vec您可以使用unlist()
从两列中创建一个向量,然后在其中找到最接近的值:
vec <- unlist(df[,c(1,2)]) # create vector
vec[which.min(abs(vec - value))] # find nearest value
#Min_Benefs8
# 20000
vec节省计算时间,只提供布尔向量。所有这些嵌套的东西都会降低代码的可读性
blah <- data.frame(x = seq.int(10)*1000, y = seq.int(10)*1000 + 999)
tmpin <- 9003
blah %>% dplyr::filter(x <= tmpin & y > tmpin)
# OR
blah[with(blah, x <= tmpin & y > tmpin),]
# OR
base::subset(blah, x <= tmpin & y > tmpin)
blah%
dplyr::筛选器(x tmpin)%>%
总结(minum=ifelse(x+y>2*tmpin,x,y))
但它并不像另一个答案中建议的那样短。节省计算时间,只提供一个布尔向量。所有这些嵌套的东西都会降低代码的可读性
blah <- data.frame(x = seq.int(10)*1000, y = seq.int(10)*1000 + 999)
tmpin <- 9003
blah %>% dplyr::filter(x <= tmpin & y > tmpin)
# OR
blah[with(blah, x <= tmpin & y > tmpin),]
# OR
base::subset(blah, x <= tmpin & y > tmpin)
blah%
dplyr::筛选器(x tmpin)%>%
总结(minum=ifelse(x+y>2*tmpin,x,y))
但它并不像另一个答案中所说的那么短