2011-05-10 4 views
5

임의의 열 값 샘플에 대해 모든 행을 선택하려면 어떻게합니까? 사용 복제 할 수 있습니다R - 임의의 열 값 샘플에 대해 행을 선택 하시겠습니까?

tag weight 

R007  10 
R007  11 
R007  9 
J102  11 
J102  9 
J102  13 
J102  10 
M942  3 
M054  9 
M054  12 
V671  12 
V671  13 
V671  9 
V671  12 
Z990  10 
Z990  11 

...

weights_df <- structure(list(tag = structure(c(4L, 4L, 4L, 1L, 1L, 1L, 1L, 
3L, 2L, 2L, 5L, 5L, 5L, 5L, 6L, 6L), .Label = c("J102", "M054", 
"M942", "R007", "V671", "Z990"), class = "factor"), value = c(10L, 
11L, 9L, 11L, 9L, 13L, 10L, 3L, 9L, 12L, 12L, 14L, 5L, 12L, 11L, 
15L)), .Names = c("tag", "value"), class = "data.frame", row.names = c(NA, 
-16L)) 

내가 위에서 모든 행을 포함하는 dataframe을 만들어야합니다

나는이처럼 보이는 dataframe이 임의로 샘플링 된 두 개의 태그에 대한 데이터 프레임 R007 및 M942 태그가 무작위로 선택되었다고 가정하면 새로운 데이터 프레임은 다음과 같이 표시되어야합니다.

tag weight 

R007  10 
R007  11 
R007  9 
M942  3 

어떻게하면됩니까?

는 나는이 같은 두 개의 무작위 태그 목록 생성 할 수 있습니다 알고에 ...

tag count 
4 R007  3 
3 M942  1 

결과

library(plyr) 
tags <- ddply(weights_df, .(tag), summarise, count = length(tag)) 
set.seed(5464) 
tag_sample <- tags[sample(nrow(tags),2),] 
tag_sample 

을하지만 난 그냥 서브 세트 그것을 사용하는 방법을 모른다 내 원래의 데이터 프레임. 당신의 data.frame가 dfrm라는 경우

답변

7

이 당신이 원하는 무엇인가?

subset(weights_df, tag%in%sample(levels(tag),2)) 
+0

를 사용하는 것은 간단합니다. :) 감사합니다! 실제로 SQL과 비슷한 "in"연산자를 찾으려고했지만 아무 것도 생각 나지 않았습니다. –

+0

좋은 하나. 물론 나는'levels' 함수를 호출 할 필요가 없다고 생각합니다. – Ramnath

+0

@Ramnath 여기에 '레벨'이 필요합니다. – kohske

2

, 다음이 선택됩니다 100 임의 tag

dfrm[ sample(NROW(dfrm), 100), "tag" ] # possibly with repeats 

다른 한편으로는, 당신은 (아마도 반복와) 같은 열이있는 dataframe을 원하는 경우

samp <- dfrm[ sample(NROW(dfrm), 100), ] # leave the col name entry blank to get all 

세 번째 가능성 ... 당신은 무작위로 100 개 별개의 태그를 원하지만, 전혀 주파수에 가중 확률 :

samp.tags <- unique(dfrm$tag)[ sample(length(unique(dfrm$tag)), 100] 

수정 : 수정 된 질문으로; 다음 중 하나를

subset(dfrm, tag %in% c("R007", "M942")) 

또는 :

dfrm[dfrm$tag %in% c("R007", "M942"), ] 

또는 :

dfrm[grep("R007|M942", dfrm$tag), ] 
+0

죄송합니다. 내 원래의 질문이 명확하지 않으므로 답장이 내가하려는 것을 적용하지 않는다고 생각합니다. 업데이트 된 질문이 더 의미가 있습니까? –

+0

서브 세트 또는 "[% in % %" –

관련 문제