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