Итак, у меня есть набор данных, который показывает год, в который каждая страна вступила во Всемирную торговую организацию (ВТО) и ее предшественника, Генеральное соглашение по тарифам и торговле (1995 г.).Следует отметить, что ВТО была создана в 1995 году в результате расширения ГАТТ (созданного в 1947 году), и некоторые члены ГАТТ (например, ангола ниже) не вступили в ВТО сразу в 1995 году, но ожидали до 1996 года или позже в зависимости отстрана.Некоторые страны также не были членами ГАТТ, но вступили в ВТО после ее создания (например, Афганистан ниже).
Я хотел бы взять мои данные в формате первого тиббля ниже и изменить формат, чтобы получить списоквсе годы для каждой страны и категорическая переменная, показывающая, были ли они членами ГАТТ, ВТО или еще ни одной.Мой фактический набор данных намного больше этого примера с датами с 1948 по 2017 год, и многие другие страны, делающие это вручную, будут ужасны.
для этого примера, просто ограничив даты с 1992 по 1996 и посмотрев напервые 6 стран, в основном я хотел бы перейти от этого:
df <- data.frame(Country = c("Afghanistan", "Albania", "Angola", "Antigua and Barbuda", "Argentina", "Armenia"),
Year_joined_WTO = c(2016, 2000, 1996, 1995, 1995, 2003),
Year_joined_GATT = c(NA, NA, 1994, 1987, 1967, NA))
df <- as_tibble(df)
> df
# A tibble: 6 x 3
Country Year_joined_WTO Year_joined_GATT
<fct> <dbl> <dbl>
1 Afghanistan 2016 NA
2 Albania 2000 NA
3 Angola 1996 1994
4 Antigua and Barbuda 1995 1987
5 Argentina 1995 1967
6 Armenia 2003 NA
к этому:
df_intended <- data.frame(Country = c("Afghanistan", "Afghanistan","Afghanistan","Afghanistan","Afghanistan", "Albania", "Albania","Albania","Albania","Albania","Angola", "Angola","Angola","Angola","Angola","Antigua and Barbuda","Antigua and Barbuda","Antigua and Barbuda","Antigua and Barbuda","Antigua and Barbuda", "Argentina", "Argentina","Argentina","Argentina","Argentina","Armenia","Armenia","Armenia","Armenia","Armenia"),
Year = c(1992, 1993, 1994, 1995, 1996, 1992, 1993, 1994, 1995, 1996,1992, 1993, 1994, 1995, 1996,1992, 1993, 1994, 1995, 1996,1992, 1993, 1994, 1995, 1996,1992, 1993, 1994, 1995, 1996),
Member_WTO_GATT = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "GATT", "GATT", "WTO", "GATT","GATT","GATT", "WTO", "WTO", "GATT","GATT","GATT", "WTO", "WTO", NA, NA, NA, NA, NA))
df_intended <- as_tibble(df_intended)
print(tbl_df(df_intended), n =30)
# A tibble: 30 x 3
Country Year Member_WTO_GATT
<fct> <dbl> <fct>
1 Afghanistan 1992 NA
2 Afghanistan 1993 NA
3 Afghanistan 1994 NA
4 Afghanistan 1995 NA
5 Afghanistan 1996 NA
6 Albania 1992 NA
7 Albania 1993 NA
8 Albania 1994 NA
9 Albania 1995 NA
10 Albania 1996 NA
11 Angola 1992 NA
12 Angola 1993 NA
13 Angola 1994 GATT
14 Angola 1995 GATT
15 Angola 1996 WTO
16 Antigua and Barbuda 1992 GATT
17 Antigua and Barbuda 1993 GATT
18 Antigua and Barbuda 1994 GATT
19 Antigua and Barbuda 1995 WTO
20 Antigua and Barbuda 1996 WTO
21 Argentina 1992 GATT
22 Argentina 1993 GATT
23 Argentina 1994 GATT
24 Argentina 1995 WTO
25 Argentina 1996 WTO
26 Armenia 1992 NA
27 Armenia 1993 NA
28 Armenia 1994 NA
29 Armenia 1995 NA
30 Armenia 1996 NA
Я попытался собрать годы в одну колонку, но проблема, с которой я сталкиваюськак это сделать в столбце, показывающем каждый год для каждой страны, а также показывающим, что они являются членами в последующие годы после присоединения.
Моя слабая попытка:
df2 <- df %>%
group_by(Country) %>%
gather(Year_joined_WTO, Year_joined_GATT, key = member_wto_gatt, value = Year)
> df2
# A tibble: 12 x 3
# Groups: Country [6]
Country member_wto_gatt Year
<fct> <chr> <dbl>
1 Afghanistan Year_joined_WTO 2016
2 Albania Year_joined_WTO 2000
3 Angola Year_joined_WTO 1996
4 Antigua and Barbuda Year_joined_WTO 1995
5 Argentina Year_joined_WTO 1995
6 Armenia Year_joined_WTO 2003
7 Afghanistan Year_joined_GATT NA
8 Albania Year_joined_GATT NA
9 Angola Year_joined_GATT 1994
10 Antigua and Barbuda Year_joined_GATT 1987
11 Argentina Year_joined_GATT 1967
12 Armenia Year_joined_GATT NA
Я также пыталсяделать некоторые объединения и слияния со списком всех дат, которые я хочу (например,
years <- data.frame(Year = c(1992:1996))
years <- as_tibble(years)
> df3 <- right_join(df2, years)
Joining, by = "Year"
Warning message:
Factor `Country` contains implicit NA, consider using `forcats::fct_explicit_na`
> df3
# A tibble: 6 x 3
# Groups: Country [7]
Country member_wto_gatt Year
<fct> <chr> <dbl>
1 NA NA 1992
2 NA NA 1993
3 Angola Year_joined_GATT 1994
4 Antigua and Barbuda Year_joined_WTO 1995
5 Argentina Year_joined_WTO 1995
6 Angola Year_joined_WTO 1996
), но они были совершенно безуспешными, и я не могу найти подобных примеров того, как это сделать.Любая помощь будет оценена