Внутреннее соединение и фильтр, исчезающие наблюдения

#r #filtering

Вопрос:

Я работаю над проектом, связанным с Повесткой дня на период до 2030 года, и я скачал несколько файлов отсюда https://unstats.un.org/sdgs/indicators/database/

У меня со всеми ними одна и та же проблема, поэтому давайте возьмем в качестве примера цель № 12.Как только я загрузил и загрузил xlsx в R, я хочу отфильтровать его в соответствии с «Индикатором», встроенным в данные. Но сначала я объединяю его с другим фреймом данных, загруженным отсюда (https://data.un.org/Data.aspx?q=gdpamp;d=SNAAMAamp;f=grID:101;currID:USD;pcFlag:1).

 df <- read_excel("Goal12.xlsx")

gdp <- read.csv("UNdataGDP.txt", header = TRUE, sep="|")

gdp<- rename(gdp, GDP = Value)
gdp<- rename(gdp, Country = Country.or.Area)

joinedf <- inner_join(gdp, df, by = c("Country" ="GeoAreaName" , "Year"="TimePeriod"))

joinedffilter <- filter(joinedf, Indicator == "12.1.1")
 

Проблема касается последней команды. Когда я указываю определенные индикаторы, он возвращает мне фреймы данных с 0 строками.

Если я использую

 unique(df[c("Indicator")])
# A tibble: 11 x 1
   Indicator
   <chr>    
 1 12.1.1   
 2 12.2.1   
 3 12.2.2   
 4 12.3.1   
 5 12.4.1   
 6 12.4.2   
 7 12.5.1   
 8 12.6.1   
 9 12.a.1   
10 12.b.1   
11 12.c.1
 

Я знаю, что в исходном фрейме данных есть индикатор 12.1.1, но некоторые из них теряются, когда я использую inner_join для объединения фреймов данных. Действительно, если я использую

 unique(joinedf[c("Indicator")])
     Indicator
1       12.a.1
2       12.c.1
9       12.2.2
161     12.4.1
880     12.b.1
940     12.4.2
2023    12.5.1
6669    12.3.1
 

Как уже упоминалось, индикатор 12.1.1 исчез.

Надеясь, что я дал вам всю необходимую информацию и что для понимания проблемы здесь не потребуется много времени, не могли бы вы объяснить, в чем заключаются ошибки? Я новичок в использовании R Studio и пытаюсь совершенствоваться.

Я предвкушаю большое вам спасибо! Такое замечательное сообщество.

Комментарии:

1. Так почему же вы ожидаете inner_join получить все результаты? видишь это

2. Если вы хотите сохранить все Indicator переменные, попробуйте использовать full_join .