2014-02-20 5 views
1

나는 2 개의 데이터 프레임을 가지고 있습니다. 이 dataframes의 잘린 예는 다음과 같습니다하위 집합 데이터 프레임 두 열의 조합을 기반으로

dataSC_ds

SURVEY_DATE SITE 
2012-07-01 Site 1 
2012-08-10 Site 2 
2012-09-15 Site 1 
2012-09-20 Site 1 
... 

dataSC

SURVEY_DATE FISHING_SITE DATA_COLLECTION_SITE SHIFT TIME_BLOCK 
2012-07-01 Site 1        AM  9 
2012-07-01     Site 1    AM  9 
2012-07-02 Site 2        AM  11 
2012-07-02     Site 2    AM  11 
2012-07-15 Site 3        PM  15 
2012-07-15     Site 3    PM  15 
2012-08-10 Site 2        PM  16 
2012-08-10     Site 2    PM  16 
2012-08-20 Site 2        AM  11 
2012-08-20     Site 2    AM  11 
2012-09-15 Site 1        AM  9 
2012-09-15     Site 1    AM  9 
2012-09-15 Site 1        AM  10 
2012-09-15     Site 1    AM  10 
2012-09-20 Site 1        PM  13 
2012-09-20     Site 1    PM  13 
2012-09-20 Site 3        PM  15 
2012-09-20     Site 3    PM  15 
... 
내가 날짜 & 사이트의 조합으로 행을 유지하기 위해 dataSC 부분 집합 싶습니다

그 dataSC_ds에 있습니다. 복잡한 부분이 있음을 dataSC_ds에

2012-07-01 Site 1 

을 주어, 나는 사이트 1가 FISHING_SITE 또는 DATA_COLLECTION_SITE 중 하나가있는 2012-07-01와 dataSC의 행을 유지하고 싶습니다.

내가 어떻게 할 수 있는지에 대한 아이디어가 있으면 알려 주시기 바랍니다. 미리 감사드립니다.

답변

1

데이터에 중복성이있는 것으로 보입니다. 어업과 수거 장소가 같은 관찰 일 수는 없습니까? 그럼에도 불구하고 mapply을 사용하여 모든 다른 사이트에서 데이터의 하위 집합을 만들 수 있습니다.

subsets 

$`2012-07-01 Site 1` 
    SURVEY_DATE FISHING_SITE DATA_COLLECTION_SITE SHIFT TIME_BLOCK 
1 2012-07-01  Site 1       AM   9 
2 2012-07-01       Site 1 AM   9 

$`2012-08-10 Site 2` 
    SURVEY_DATE FISHING_SITE DATA_COLLECTION_SITE SHIFT TIME_BLOCK 
7 2012-08-10  Site 2       PM   16 
8 2012-08-10       Site 2 PM   16 

$`2012-09-15 Site 1` 
    SURVEY_DATE FISHING_SITE DATA_COLLECTION_SITE SHIFT TIME_BLOCK 
11 2012-09-15  Site 1       AM   9 
12 2012-09-15       Site 1 AM   9 
13 2012-09-15  Site 1       AM   10 
14 2012-09-15       Site 1 AM   10 

$`2012-09-20 Site 1` 
    SURVEY_DATE FISHING_SITE DATA_COLLECTION_SITE SHIFT TIME_BLOCK 
15 2012-09-20  Site 1       PM   13 
16 2012-09-20       Site 1 PM   13 
+0

이 도움이됩니다 :

# make a function to subset the data select <- function(x, y) dataSC[dataSC$SURVEY_DATE== y & (dataSC$FISHING_SITE==x | dataSC$DATA_COLLECTION_SITE==x), ] #apply the function with all elements of dataSC_ds$SITE subsets <- mapply(select, x=dataSC_ds$SITE, y=dataSC_ds$SURVEY_DATE, SIMPLIFY=FALSE) #name the data.frames of the list with data and site subsets <- setNames(subsets, paste(dataSC_ds$SURVEY_DATE, dataSC_ds$SITE)) 

이렇게하면 모든 부분 집합에 목록을 제공합니다. 감사! – EricaO

관련 문제