Объединение двух фреймов данных с разными размерами и отсутствующими значениями

У меня проблема с объединением двух фреймов данных в R.

Первый состоит из 103731 obs из 6 переменных. Переменная, которую я должен использовать для слияния, имеет 77111 уникальных значений, а остальные NAs со значением 0. Второй содержит частоту этих переменных плюс частоту NAТаким образом, кадр из 77112 объектов для 2 переменных.

Результирующий кадр, который мне нужно получить, является первым, соединенным с частотой для переменной слияния, поэтому df 103731 соответствует частоте для каждого значения переменной слияния (то есть с дубликатами, если freq > 1, а также для каждого NA (или 0)).

Кто-нибудь может мне помочь?

Результат, который я сейчас получаю, содержит фрейм данных 1 894 919 объектов, и я использовал:

tot = merge(df1, df2, by = "mergingVar", all= F, sort = F);  

Также я много играл с 'all=и ни одна из вариаций не дала правильного df.

1 ответ

Почему бы вам просто не взять таблицу частот вашей первой таблицы?

a <- data.frame(a = c(NA, NA, 2,2,3,3,3))
data.frame(table(a, useNA = 'ifany'))

     a Freq
1    2    2
2    3    3
3 <NA>    2

или же mutate от plyr

ddply(a, .(a), mutate, freq = length(a))

   a freq
1  2    2
2  2    2
3  3    3
4  3    3
5  3    3
6 NA    2
7 NA    2
Другие вопросы по тегам