У меня есть два кадра данных, один год года, а другой год страны.
Xccode1 ccode2 ccdistance countryname_1 countryname_2 majorpower_1
majorpower_2 milex_1 milper_1
1 1 2 20 0 United States of America Canada 1
0 143981000 2050
2 2 2 31 957 United States of America Bahamas 1
0 143981000 2050
3 3 2 40 1129 United States of America Cuba 1
0 143981000 2050
4 4 2 41 1437 United States of America Haiti 1
Страна-год:
ccode1 year Fac1_A Fac2_A Fac3_A
<int> <int> <dbl> <dbl> <dbl>
1 2 1980 -0.661 4.66 15.5
2 2 1981 -0.661 4.66 15.5
3 2 1982 -0.661 5.11 15.5
4 2 1983 -0.661 5.21 15.5
5 2 1984 -0.661 5.66 15.5
6 2 1985 -0.661 5.21 15.5
7 2 1986 -0.661 5.21 15.5
8 2 1987 -0.661 5.21 15.5
9 2 1988 -0.661 5.21 15.5
10 2 1989 -0.661 5.00 15.5
Я хотел бы объединить эти два фрейма данных, чтобы каждая страна в диаде имела значение FacX, однако мои попытки сделать это либо дало мне ошибку, либо много АН. Сначала я попытался использовать простой ifelse:
Demo_Dyad$Fac1_A_NR <- ifelse(Demo_Dyad$ccode1 == Cntry_yr$ccode1 &
Demo_Dyad$year == Cntry_yr$year,
Cntry_yr$Fac1_A, NA)
Однако в результате каждая страна в Dyad_Year имеет значение только один раз. Например, США <-> Гаити 1981 могут иметь значение X, но США <-> Куба 1981 будет NA.
Затем я попытался сделать это, сгруппировав в dplyr:
Demo_Dyad %>%
group_by(ccode1, year) %>%
mutate(Fac1_A_NR <- ifelse(ccode1 == Cntry_yr$ccode1 &
year == Cntry_yr$year, Cntry_yr$Fac1_A, NA))
Но получите ошибку: Error in `$<-.data.frame`(`*tmp*`, Fac1_A_NR, value = c(-0.660552389122193, :
replacement has 4942 rows, data has 217149
Если кто-нибудь увидит, что не так с моим кодом, я был бы очень признателен.