Объединение двух фреймов данных с разными размерами и отсутствующими значениями
У меня проблема с объединением двух фреймов данных в R.
Первый состоит из 103731 obs из 6 переменных. Переменная, которую я должен использовать для слияния, имеет 77111 уникальных значений, а остальные NA
s со значением 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