2014-11-03 3 views
0

dplyr을 실제로 사용한 적이 없으며 다음 컨텍스트에서 어떻게 사용할 수 있는지 궁금합니다. 그래서, 나는 두 개의 데이터 프레임을 다음 있습니다 : dplyr을 사용하여 두 개의 데이터 프레임에서 하나의 열에있는 공통 값을 기반으로 데이터를 서브 세트로 변환

trainData <- read.csv("train.csv", header = TRUE, stringsAsFactors = FALSE) 
subscriptionData <- read.csv("subscriptions.csv", header = TRUE, stringsAsFactors = FALSE) 
> head(trainData) 
     account.id total 
1 001i000000NuOGY  0 
2 001i000000NuS8r  0 
3 001i000000NuPGw  0 
4 001i000000NuO7a  0 
5 001i000000NuQ2f  0 
6 001i000000NuOQz  0 

> head(subscriptionData) 
     account.id season package no.seats   location   section price.level total multiple.subs 
1 001i000000LhyR3 2009-2010 Quartet  2  San Francisco Premium Orchestra   1 1.0   no 
2 001i000000NuOeY 2000-2001 Full  2  San Francisco   Orchestra   2 2.0   no 
3 001i000000NuNvb 2001-2002 Full  2 Berkeley Saturday  Balcony Front   3 2.0   no 
4 001i000000NuOIz 1993-1994 Quartet  1  Contra Costa   Orchestra   2 0.5   no 
5 001i000000NuNVE 1998-1999 Full  2 Berkeley Sunday  Balcony Rear   4 2.0   no 

가 지금은 trainDataaccount.id에 따라 subscriptionData의 일부를 먹고 싶어. 기본적으로 에있는 subscriptionData의 하위 집합을 account.id으로 가져 가고 싶습니다.

나는 아주 기본적인 질문이지만 나는 완전히 새로운 dplyr이고 단서가 없다는 것을 알고있다. 당신은 반을 원하는

+2

'subscriptionData %> % 필터 (% trainData $ account.id에서 account.id %)을 '가정의 id는 고유합니다. – KFB

+1

@hmi 'inner_join'즉, 'inner_join (subscriptionData, trainData [,'account.id ', drop = FALSE], by ='account.id ')' – akrun

+0

감사 인사를 사용할 수 있습니다. 그것을 해결했습니다 :) – hmi

답변

4

가입 :

subscriptionData %>% semi_join(trainData, by = "account.id") 
+2

@ 부리 미 응? 이것은 질문에 답합니다. – hadley

+3

그 바보 같은 파이프 기호를 타이핑하는 것을 조금 저장하십시오 :'semi_join (subscriptionData, trainData, by = "account.id")'- 나는 파이프를 묶어서 파이프에 매달리지 않을 때 파이프가 멋지다는 것을 의미합니다. – Spacedman

+3

@Spacedman 예, 여기서는 필요하지 않지만 변환 순서에 사용될 가능성이 큽니다. – hadley

관련 문제