从R

时间:2017-03-15 03:18:22

标签: r dataframe

我有一个数据框如下:

date   accumulated_visits
01-01    102
01-02    134
01-03    148
01-04    159
01-05    162
01-06    175

我想要一个函数,它可以找到最近的条目,给定一个特定的访问号码。例如,我想找到累计访问量达到150的日期。我希望返回

01-03  148 

是否有buildin函数来处理它?<​​/ p>

1 个答案:

答案 0 :(得分:6)

您可以计算绝对差值并使用which.min查找最小差异的索引

df[which.min(abs(150-df$accumulated_visits)),]
#   date accumulated_visits
#3 01-03                148

或者,当accumulated_visits排序后,您也可以使用findInterval

df[findInterval(150, df$accumulated_visits),]
#   date accumulated_visits
#3 01-03                148

数据

df = structure(list(date = c("01-01", "01-02", "01-03", "01-04", "01-05", 
"01-06"), accumulated_visits = c(102L, 134L, 148L, 159L, 162L, 
175L)), .Names = c("date", "accumulated_visits"), class = "data.frame", row.names = c(NA,
-6L))