【发布时间】:2020-02-13 05:24:38
【问题描述】:
我需要在时间序列中出现一个数字后将 NA 转换为 0。这是一个例子:
c1 <- c(1,NA,NA,NA,NA,1,2,NA,NA,NA,5,NA,NA)
c2 <- c(2,NA,NA,10,30,NA,NA,NA,NA,4,1,2,NA)
c3 <- c(3,NA,NA,NA,NA,NA,NA,NA,NA,1,NA,NA,NA)
x <- data.frame(rbind(c1,c2,c3))
colnames(x) <- c("ID","Jan01","Feb01","Mar01","Apr01","May01","Jun01","Jul01","Aug01","Sep01","Oct01","Nov01","Dec01")
x
# ID Jan01 Feb01 Mar01 Apr01 May01 Jun01 Jul01 Aug01 Sep01 Oct01 Nov01 Dec01
# c1 1 NA NA NA NA 1 2 NA NA NA 5 NA NA
# c2 2 NA NA 10 30 NA NA NA NA 4 1 2 NA
# c3 3 NA NA NA NA NA NA NA NA 1 NA NA NA
这是我所期望的:
c11 <- c(1,NA,NA,NA,NA,1,2,0,0,0,5,0,0)
c22 <- c(2,NA,NA,10,30,0,0,0,0,4,1,2,0)
c33 <- c(3,NA,NA,NA,NA,NA,NA,NA,NA,1,0,0,0)
y <- data.frame(rbind(c11,c22,c33))
colnames(y) <- c("ID","Jan01","Feb01","Mar01","Apr01","May01","Jun01","Jul01","Aug01","Sep01","Oct01","Nov01","Dec01")
y
# ID Jan01 Feb01 Mar01 Apr01 May01 Jun01 Jul01 Aug01 Sep01 Oct01 Nov01 Dec01
# c11 1 NA NA NA NA 1 2 0 0 0 5 0 0
# c22 2 NA NA 10 30 0 0 0 0 4 1 2 0
# c33 3 NA NA NA NA NA NA NA NA 1 0 0 0
有人知道怎么做吗?谢谢!
【问题讨论】:
-
那么timeserie中出现一个数字后表示每行有一个数字?第 1 行 2 号,第 2 行 30 号?