2016-07-24 3 views
-1

У меня есть различные dataframes как:агрегирования факторов различных dataframes длины

Var1 "Bananas" "Apples" "Oranges" 
Freq "2"  "2"  "1"    


Var2 "Bananas" "Carrots" "Strawberries" "Apples" 
Freq "3"  "2"  "3"   "4"    

и в качестве выходных данных Я хотел бы один dataframe/стола/нечто подобное давая вхождения каждого входного dataframe, в том числе 0 вхождения в хороший обзор. Так что-то вроде:

Var  "Bananas" "Apples" "Oranges" "Carrots" "Strawberries" 
Sample1 "2"  "2"  "1"  "0"   "0" 
Sample2 "3"  "4"  "0"  "2"   "3" 

Я могу не совсем понять, какое-либо решение, тем более, что data.frames не позволяют для различных длин.

+0

Вы посмотрели на 'merge'? – dayne

+1

Те, кто не похож на фреймы данных. Воспроизводимый пример будет набухать. –

ответ

1

Примите к сведению, что NA и 0 означают совершенно разные вещи. Посмотрите файл справки по адресу ?dplyr::join

library(dplyr) 
df1 <- data.frame(Var1 =c("Bananas", "Apples", "Oranges"), 
      Freq =c(2,2,1)) 
df2 <- data.frame(Var1 =c("Bananas", "Carrots", 
          "Strawberries", "Apples"), 
        Freq =c(3,2,3,4)) 
full_join(df1,df2, by = "Var1") 
+0

Включено в мой первоначальный ответ, чтобы посмотреть? Dplyr :: join, но я редактировал вызов функции, чтобы указать библиотеку, но, я думаю, я мог бы быть более ясным. – shayaa

+0

'::' загружает библиотеку, но я понимаю вашу точку зрения. Это, вероятно, более доступно для новичков, что очевидно из вопроса. – shayaa

+0

спасибо. это разрешило его для двух фреймов данных. Есть ли возможное расширение для нескольких? – heffalump

0

Вы должны смотреть на ?merge:

set.seed(1234) 
dat1 <- data.frame(var1 = LETTERS[1:5], freq = sample(1:100, 5)) 
dat2 <- data.frame(var2 = LETTERS[3:7], freq = sample(1:100, 5)) 

res <- merge(dat1, dat2, by.x = "var1", by.y = "var2", all = TRUE) 
res[is.na(res)] <- 0 
res 
# var1 freq.x freq.y 
# 1 A  12  0 
# 2 B  62  0 
# 3 C  60  65 
# 4 D  61  1 
# 5 E  83  23 
# 6 F  0 100 
# 7 G  0  50 
+0

Что делать, если перед слиянием данных 'NA' в данных? Вы просто изменили * их * на '0'. –

+0

@RichardScriven Fair point - Я действительно просто хотел проиллюстрировать, как «слияние» может помочь OP. Если ОП разъяснит их вопрос, я либо удалю, либо обновлю ответ. – dayne

Смежные вопросы