R 时间序列数据:如何编码t-1和t+;1基于t0中特定变量的值?
我有兴趣了解一个具体因素,如外国投资在变化前后5年的表现,例如内战爆发 这是我的数据结构(此处不包括系数): 我试图用括号中的相应值替换问号,例如,变更前一年(t-1)的“-1”和变更后一年(t+1)的“+1”。变更的存在用1编码R 时间序列数据:如何编码t-1和t+;1基于t0中特定变量的值?,r,variables,dataframe,time-series,R,Variables,Dataframe,Time Series,我有兴趣了解一个具体因素,如外国投资在变化前后5年的表现,例如内战爆发 这是我的数据结构(此处不包括系数): 我试图用括号中的相应值替换问号,例如,变更前一年(t-1)的“-1”和变更后一年(t+1)的“+1”。变更的存在用1编码 你会怎么做?我很感谢你的建议 谢谢你,德温!同样,您的解决方案有效地解决了问题。非常感谢。 > dat <- read.table(text="year country change time + 2001 A 0 ?
你会怎么做?我很感谢你的建议 谢谢你,德温!同样,您的解决方案有效地解决了问题。非常感谢。
> dat <- read.table(text="year country change time
+ 2001 A 0 ?(-1)
+ 2002 A 1 0
+ 2003 A 0 ?(+1)
+ 2004 A 0 ?(+2)
+ 2002 B 0 ?(-2)
+ 2003 B 0 ?(-1)
+ 2004 B 1 0
+ ", header=TRUE)
> with(dat, tapply(change, country,
function(x) seq(length(x))-which(x==1) ) )
$A
[1] -1 0 1 2
$B
[1] -2 -1 0
> dat$time <-unlist( with(dat, tapply(change, country,
function(x) seq(length(x))-which(x==1) ) ) )
> dat
year country change time
1 2001 A 0 -1
2 2002 A 1 0
3 2003 A 0 1
4 2004 A 0 2
5 2002 B 0 -2
6 2003 B 0 -1
7 2004 B 1 0
>
> dat <- read.table(text="year country change time
+ 2001 A 0 ?(-1)
+ 2002 A 1 0
+ 2003 A 0 ?(+1)
+ 2004 A 0 ?(+2)
+ 2002 B 0 ?(-2)
+ 2003 B 0 ?(-1)
+ 2004 B 1 0
+ ", header=TRUE)
> with(dat, tapply(change, country,
function(x) seq(length(x))-which(x==1) ) )
$A
[1] -1 0 1 2
$B
[1] -2 -1 0
> dat$time <-unlist( with(dat, tapply(change, country,
function(x) seq(length(x))-which(x==1) ) ) )
> dat
year country change time
1 2001 A 0 -1
2 2002 A 1 0
3 2003 A 0 1
4 2004 A 0 2
5 2002 B 0 -2
6 2003 B 0 -1
7 2004 B 1 0
>
> dat$time <- with(dat, ave(change, country, FUN=function(x) seq(length(x))-which(x==1) ) )
> dat
year country change time
1 2001 A 0 -1
2 2002 A 1 0
3 2003 A 0 1
4 2004 A 0 2
5 2002 B 0 -2
6 2003 B 0 -1
7 2004 B 1 0