我想通過將年份與索引匹配來填充空向量。例如,假設我正在分析 18 年的資料。我有一個由 %Y-%m 格式的日期組成的向量,例如。
vt = c("2004-02","2006-03","2007-07")
我有一個帶有 NA 的向量說
vv = rep(NA, 18)
現在我想以一種"2004-02"進入4th位置,"2006-03"進入6th位置,然后"2007-07"進入空向量中的位置的方式填充7th空向量。我想通過將位置與年份匹配來填充空向量。
我可以通過回圈日期向量來做到這一點,但我想要一種矢量化的方式來做到這一點。
預期產出
NA NA NA 2004-02 NA 2006-03 2007-07 NA NA NA NA NA NA NA NA NA NA NA
我真的很感激任何幫助。
uj5u.com熱心網友回復:
這可以作為帖子想要的輸出,但可能無法涵蓋所需的所有邊緣情況。
vt = c("2004-02","2006-03","2007-07")
vv <- rep(NA_character_, 18)
ids <- as.integer(substr(vt, 4, 4))
vv[ids] <- vt
vv
但是,請注意,這取決于提供的唯一年份,覆寫最后一次出現的年份。那是,
vt = c("2004-02","2006-03","2007-07", "2007-01")
會給出有些誤導的結果。另一個注意事項:2000 年將引發錯誤。如果有這種情況,as.integer(substr(vt, 4, 4)) 1可以使用(在長度為 19 的向量上)。
uj5u.com熱心網友回復:
vt <- c("2004-02","2006-03","2007-07")
vv <- rep(NA, 18)
vv[as.numeric(sapply(strsplit(vt, "-"), `[`, 1))-2000] <- vt
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/367382.html
標籤:r
下一篇:R中的函式內部無法識別資料
