![](/img/trans.png)
[英]How to extract longitudinal time-series data from a dataframe in R for time-series analysis and imputation
[英]How to code a variable from one dataframe to another for time-series
我有看起來像這樣的數據:
**country** **regstdate** **regenddate**
U.K. 1824 1918
Austria-Hungary 1800 1865
Japan 1800 1945
China 1965 2019
.
.
.
Russia 1815 2010
和另一個看起來像這樣的國家二元數據集:
**country_1** **country_2** **reg_power1** **reg_power2**. **year**
U.K. USA NA NA 1823
U.K. USA NA NA 1824
U.K. USA NA NA 1825
U.K. USA NA NA 1826
.
.
.
U.K. USA NA NA 1918
基本上我正在嘗試做但似乎無法弄清楚的是為這些國家開始的年份編寫一個country_1
或country_2
是“區域權力”( reg_power1
或reg_power2
)的全年虛擬變量並以區域權力( regstdate
和regenddate
)結束。 第二個數據集最終看起來像這樣:
**country_1** **country_2** **reg_power1** **reg_power2**. **year**
U.K. USA 1 0 1823
U.K. USA 1 0 1824
U.K. USA 1 0 1825
U.K. USA 1 0 1826
.
.
.
U.K. USA 0 0 1918
我試過這個:
dyads$reg_power1 <- ifelse(dyads$ccode1 == reg_power$ccode &
dyads$year >= reg_power$regstyear &
dyads$year <= reg_power$regendyear, 1, 0)
但這似乎不起作用。
#Data
C<-c("U.K.","Austria-Hungary","Japan","China","Russia")
Y0<-c(1824,1800,1800,1965,1815)
Y1<-c(1918,1865,1945,2019,2010)
df<-cbind(C,Y0,Y1)
df2<-expand.grid(C,C,min(Y0):max(Y1))
df2<-df2[!df2[,1]==df2[,2],]
names(df2)<-c("country1","country2","year")
和
#Solution
sol<-merge(df2,df[,c(1,2)],by.x="country1",by.y="C",all=T)
sol<-merge(sol,df[,c(1,3)],by.x="country2",by.y="C",all=T)
sol$reg_power1<-ifelse(sol$year==sol$Y0,1,0)
sol$reg_power2<-ifelse(sol$year==sol$Y1,1,0)
sol<-sol[,c(2,1,6,7,3)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.