我有一組面板資料df1,其形式如下:
我有一組面板資料df1,其形式如下
df1:
年國家資格覆寫率
1990 AL .87 .70
1991 AL 0.78 0.61
1992 AL 0.82 0.63
1993 AL 0.79 0.69
1994 AL .82 .73
1990 AK 0.91 0.88
1991 AK 0.83 0.79
1992 AK .82 .71
1993 AK 0.77 0.69
1994 AK .82 .73
我需要從另一組資料df2中添加一個變數 "專業主義",但問題是df2只有在偶數年測量的觀測值。df2的形式如下:
df2:
年國家職業化
1990 AL 1.33
1992 AL 1.40
1994 AL 1.42
1990 AK -0.92
1992 AK -0.98
1994 AK - 1.02
是否有一個函式R可以將奇數年添加到df2中,復制年份 1的值,產生以下輸出:
df2' 。
年份 狀態 專業性
1990年 AL 1.33
1991年 AL 1.40
1992年 AL 1.40
1993年 AL 1.42
1994年 AL 1.42
1990年AK -0.92
1991年AK -0.98
1992年AK -0.98
1993 AK -1.02
1994年AK -1.02
然后我可以將專業主義變數從新的df2'合并到df1......這可能嗎?
uj5u.com熱心網友回復:
我們可以使用complete與fill
library(dplyr)
library(tidyr)
df2 %> %
完成(年= 1990。 1994, state) %>%
group_by(state) %>%
填充(專業, . direction = "updown") %>%.
取消分組%>%
安排(州,年)
輸出
# A tibble: 10 x 3
年態職業化
<int> < chr> <dbl>/span>
1 1990 AK -0.92
2 1991 AK -0.98
3 1992 AK -0.98
4 1993 AK -1.02
5 1994 AK -1.02
6 1990 AL 1.33
7 1991 AL 1.4
8 1992 AL 1.
9 1993 AL 1.42
10 1994 AL 1.42
資料
。df2 < -結構(list(年= c(1990L。 1992L, 1994L。 1990L, 1992L, 1994L
)。 狀態= c("AL"。 "AL", "AL"。 "AK", "AK"。 "AK")。 職業精神 = c(1. 33,.
1.4, 1.42, -0. 92, -0.98, /span> -1. 02)), class == "data. frame",行。 names = c(NA,)
-6L))
uj5u.com熱心網友回復:
我認為最簡單的方法是在df1中創建一個新的列,將年份四舍五入為偶數值,然后left_join來自df2的資料:
library(tidyverse)
#Setting up example data
df1 <- tribble()
~年, ~態。
1990, "AL", . 87, .70, .
1991, "AL", . 78, .61, .
1992, "AL", . 82, .63, .
1993, "AL", . 79, .69, .
1994, "AL", . 82, .73, .
1990, "AK", . 91, .88, .
1991, "AK", . 83, .79, .
1992, "AK", . 82, .71, .
1993, "AK", . 77, .69, .
1994, "AK", . 82, .73)
df2 <- tribble()
~年, ~態。 ~專業, ~專業,
1990, "AL", 1.33,
1992, "AL", 1.40, 1994, "AL", 1.42, 1.42, 1990, "AK", -0。 92,
1992, "AK", -0. 98,
1994, "AK", -1. 02)
#在df1中創建一個 "偶數年 "變數,然后從df2中左鍵連接
df1 <- df1 %> % mutate(year_even = ceiling(year=) 運算子">/2)*2)
df1 < - left_join(df1, df2。 由= c("year_even" = "year"。 "state" = "state"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/332728.html
標籤:
