2
我有兩個向量A和B。我想要A的每個日期,獲得B中最接近的日期,它比日期本身更大或更好。在R中,相當於upper_bound()
(原因是B是一個工作日的列表,我需要我的輸出是一個工作日)。
我該如何以矢量化的方式在R中做到這一點?
我有兩個向量A和B。我想要A的每個日期,獲得B中最接近的日期,它比日期本身更大或更好。在R中,相當於upper_bound()
(原因是B是一個工作日的列表,我需要我的輸出是一個工作日)。
我該如何以矢量化的方式在R中做到這一點?
+1到blindJesse的應用邏輯,但需要注意給予的情況下沒有最近的日期存在還有發生的數字強制:
a <- as.Date(sample(1:20, 5, T), origin=Sys.Date())
#[1] "2012-08-26" "2012-08-31" "2012-08-25" "2012-08-18" "2012-08-20"
b <- as.Date(sample(1:20, 5, T), origin=Sys.Date())
#[1] "2012-08-27" "2012-08-27" "2012-08-25" "2012-08-22" "2012-08-17"
sapply(a, function(x) min(b[b>x]))
#[1] 15579 Inf 15579 15574 15574
# generate the min index instead, catching for no min case
min.indices <- sapply(a, function(x) {
ifelse(length(which.min(b[b>x]))==0, NA, which.min(b[b>x]))
})
b[min.indices]
#[1] "2012-08-27" NA "2012-08-27" "2012-08-22" "2012-08-22"
這應該工作,雖然有可能是一個矢量化的解決方案:
sapply(d1, function(x) min(d2[d2>x]))
如果您在問題中發佈樣本數據和預期結果,它總是會更容易回答。 – Andrie 2012-08-13 17:45:00
@Andrie:點了 – BlueTrin 2012-08-13 19:31:23