2016-07-24 5 views
-1

나는 같은 다양한 dataframes 있습니다집계 요인

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


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

및 출력으로 나는, 각 입력 dataframe의 발생을주는에서 0 발생을 포함하여 유사 하나 dataframe/테이블/일을하고 싶습니다 좋은 개요. 그래서 뭔가 같은 :

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

꽤 data.frames이 서로 다른 길이를 허용하지 않습니다 특히 이후 모든 솔루션을 알아낼 수 없습니다.

+0

'병합'을 보았습니까? – dayne

+1

이들은 데이터 프레임처럼 보이지 않습니다. 재현 가능한 예가 부풀어 오릅니다. –

답변

1

를 적어 둡니다. 도움말 파일을보십시오 ?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에서 살펴 보셔야합니다 : NA0 매우 다른 것을 의미하는 것이

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 공정한 점 - 나는 단지 병합이 어떻게 OP를 도울 수 있는지 설명하고 싶었습니다. OP가 그들의 질문을 분명히한다면, 나는 대답을 삭제하거나 업데이트 할 것입니다. – dayne