Я знаю, что варианты этого вопроса задавались ранее, и я пробовал решения из ( Выбор строк из фрейма данных на основе значений в векторе ) и ( подмножество столбца в данных фрейм, основанный на другом фрейме данных / списке ), но я не смог заставить эти решения работать. Решения продолжают возвращать фрейм данных с 0 наблюдениями.
Мой первый фрейм данных выглядит примерно так:
> head(test3)
long lat time precip GID_0 GID_1 HASC_1
168.75 -46.25 Jan_1979 5.534297 NZL NZL.14_1 NZ.SO
171.25 -43.75 Jan_1979 4.191629 NZL NZL.3_1 NZ.CA
146.25 -41.25 Jan_1979 3.139199 AUS AUS.9_1 AU.TS
173.75 -41.25 Jan_1979 1.770889 NZL NZL.8_1 NZ.MA
176.25 -38.75 Jan_1979 2.257812 NZL NZL.17_1 NZ.WK
141.25 -36.25 Jan_1979 1.985313 AUS AUS.10_1 AU.VI
У меня есть отдельный фрейм данных, который содержит один столбец со значениями идентификатора, который выглядит следующим образом:
> head(africa_iso)
ISO
DZA
AGO
SHN
BEN
BWA
BFA
Я бы хотел отфильтровать первый кадр данных так, чтобы остались только наблюдения, совпадающие по GID_0 и ISO (концептуально, первый набор данных включает в себя наблюдения для всех стран, я хотел бы отфильтровать его в набор данных с наблюдениями из Африки только страны). В настоящее время у меня есть 725 517 наблюдений в первом кадре данных, и я ожидаю, что после фильтрации будет примерно 200 000 наблюдений.
До сих пор это были мои попытки, и каждый раз, когда у меня остается новый фрейм данных, который имеет 7 столбцов и никаких наблюдений.
Afr <- subset(test3, GID_0 %in% africa_iso$ISO) #attempt 1
Afr <- setDT(test3)[GID_0 %in% africa_iso$ISO] #attempt 2
Afr <- test3[test3$GID_0 %in% africa_iso$ISO,] #attempt 3
Afr <- filter(test3$GID_0 %in% africa_iso$ISO ) #attempt 4
Afr <- setDT(test3)[GID_0 %chin% africa_iso$ISO] #attempt 5
Afr <- test3[match(test3$GID_0, africa_iso$ISO),] #attempt 6
Afr <-test3[is.element(test3$GID_0, africa_iso$ISO),] #attempt 7
Я уверен, что для кого-то это тривиальная проблема, но я был бы признателен за любую помощь. Спасибо.
EDIT:
> str(test3)
Classes ‘data.table’ and 'data.frame': 725517 obs. of 7 variables:
$ long : num 169 171 146 174 176 ...
$ lat : num -46.2 -43.8 -41.2 -41.2 -38.8 ...
$ time : Factor w/ 477 levels "Jan_1979","Feb_1979",..: 1 1 1 1 1 1 1 1 1
$ precip: num 5.53 4.19 3.14 1.77 2.26 ...
$ ISO :'data.frame': 725517 obs. of 1 variable:
..$ : chr "NZL" "NZL" "AUS" "NZL" ...
$ ISOP :'data.frame': 725517 obs. of 1 variable:
..$ : chr "NZL.14_1" "NZL.3_1" "AUS.9_1" "NZL.8_1" ...
$ HASC :'data.frame': 725517 obs. of 1 variable:
..$ : chr "NZ.SO" "NZ.CA" "AU.TS" "NZ.MA" ...
- attr(*, ".internal.selfref")=<externalptr>
и
> str(africa_iso)
'data.frame': 62 obs. of 1 variable:
$ ISO: Factor w/ 57 levels "AGO","BDI","BEN",..: 14 1 43 3 5 4 2 8 12 6 ...