我有一个时间序列A(ts_A
),从1902年到2014年,频率= 12,每个月和某个年份(以及相应的月份)的值为NA
。
ts_A
year gen feb mar ... dec
1902 300 525 652 524
1903 NA NA NA ... NA
.... ... ... ... ... ...
2014 742 135 699 586 458
然而,我有另一个时间序列(ts_B
)从1902年到2014年,频率= 1(每年分布)
year value
1902 6524
1903 5682
.... ....
2014 5984
我会在NA
中获取数据ts_A
,只有在ts_B
中存在该年的值时,因为稍后我会用一个比例替换它们。
答案 0 :(得分:0)
我不清楚(或其他人,显然)你究竟想要什么,但我认为这与此类似:
ts_A
中查找包含所有NA
的行/年; ts_B
中找到同样为NA
; NA
中所有ts_A
行/年,其中ts_B
中的相同行/年不是NA
。如果是这样,那么这样的事情就可以了。
# make some dummy data
set.seed(123)
ts_A <- data.frame(seq(2000,2014),matrix(rpois(180,450),ncol=12))
colnames(ts_A) <- c("year",month.abb)
ts_B <- data.frame(year=seq(2000,2014),value=apply(ts_A[,-1],1,sum))
# pretend N years in ts_A have NA for all months
N <- 3
knock_out <- sample(ts_A$year,N)
ts_A[ts_A$year %in% knock_out,-1] <- rep(NA,12)
# make one of the years in ts_B also NA
ts_B[ts_B$year %in% knock_out[1],-1] <- NA
# these are the rows/years in ts_A that either have data or a non-NA in ts_B
ts_C <- ts_A[!(is.na(ts_B$value) & apply(is.na(ts_A[,-1]),1,all)),]