簡體   English   中英

如何將變量從一個 dataframe 編碼到另一個時間序列

[英]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_1country_2是“區域權力”( reg_power1reg_power2 )的全年虛擬變量並以區域權力( regstdateregenddate )結束。 第二個數據集最終看起來像這樣:

**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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM