2012-05-17 4 views
0

누군가가 도울 수 있는지 궁금합니다.지정된 길이의 데이터 프레임에서 그룹 식별 및 제거

 spp rep ac.temp   sr ink.temp flux.type  flux    unit 
1 Ecklonia 1  19 Ecklonia:1:19  10.1   R 0.1614302 mg O2 gDW-1 hr-1 
2 Ecklonia 1  19 Ecklonia:1:19  19.0   R 0.6558070 mg O2 gDW-1 hr-1 
3 Ecklonia 1  19 Ecklonia:1:19  24.7   R 0.8777117 mg O2 gDW-1 hr-1 
4 Ecklonia 1  19 Ecklonia:1:19  28.9   R 2.3192236 mg O2 gDW-1 hr-1 
5 Ecklonia 1  20 Ecklonia:1:20  10.3   R 0.5050336 mg O2 gDW-1 hr-1 
6 Ecklonia 1  20 Ecklonia:1:20  20.8   R 1.2928442 mg O2 gDW-1 hr-1 
7 Ecklonia 1  20 Ecklonia:1:20  24.8   R 1.8159838 mg O2 gDW-1 hr-1 
8 Ecklonia 1  20 Ecklonia:1:20  29.8   R 2.8463946 mg O2 gDW-1 hr-1 
9 Ecklonia 1  21 Ecklonia:1:21  10.3   R 0.5214549 mg O2 gDW-1 hr-1 
10 Ecklonia 1  21 Ecklonia:1:21  19.5   R 0.9994689 mg O2 gDW-1 hr-1 

나는 독특한 조합이 열 데이터 $ SR의 3 개 요소보다 작은 길이있다 (도시 단지 것보다 더 많은가) 행을 제거하고 싶습니다 : 나는 간단한 dataframe 있습니다.

누구나 자동 감지 기능을 알고 있습니까?

미리 감사드립니다.

+0

제거해야 할 줄의 예를 제공해 줄 수 있습니까? 요소들 사이에는 항상 콜론이 있습니까? 예 : 'Ecklonia : 1 :'또는'Ecklonia :: 20'. – sgibb

+0

3 개 미만의 요소가있는 데이터 $ sr의 고유 한 조합을 제거해야합니다. 즉 Ecklonia : 1 : 21은 요소가 2 개 뿐이므로 제거됩니다. –

+0

좋아요, 그렇다면 'Ecklonia : 1 : 8 : 32'라는 요소가 있습니까? 아니면 'Ecklonia : 1 : 21'이라는 문자열이 테이블에서 두 번만 나타나는 것을 의미합니까? –

답변

0

요소의 발생을 계산하려면 ?table을 사용할 수 있습니다.

## create example dataframe 
df <- data.frame(rep=rep(1, 16), 
       sr=c(rep("Ecklonia:1:19", 4), 
        rep("Ecklonia:1:20", 3), 
        rep("Ecklonia:1:21", 2), 
        rep("Ecklonia:1:22", 4), 
        rep("Ecklonia:1:23", 2), 
        "Ecklonia:1:24"), 
       stringsAsFactors=FALSE); 

## count occurrence of elements in column "sr" 
x <- table(df$sr); 

## keep only elements which occure at least 3 times 
keep <- df$sr %in% names(x)[x >= 3]; 

df[keep, ] 
+0

이것은 완벽하게 감사합니다. –

0

이 정보가 도움이 되나요?

a <- read.table(textConnection(" 
1 Ecklonia 1  19 Ecklonia:1:19  10.1   R 0.1614302 mg O2 gDW-1 hr-1 
2 Ecklonia 1  19 Ecklonia:1:19  19.0   R 0.6558070 mg O2 gDW-1 hr-1 
3 Ecklonia 1  19 Ecklonia:1:19  24.7   R 0.8777117 mg O2 gDW-1 hr-1 
4 Ecklonia 1  19 Ecklonia:1:19  28.9   R 2.3192236 mg O2 gDW-1 hr-1 
5 Ecklonia 1  20 Ecklonia:1:20  10.3   R 0.5050336 mg O2 gDW-1 hr-1 
6 Ecklonia 1  20 Ecklonia:1:20  20.8   R 1.2928442 mg O2 gDW-1 hr-1 
7 Ecklonia 1  20 Ecklonia:1:20  24.8   R 1.8159838 mg O2 gDW-1 hr-1 
8 Ecklonia 1  20 Ecklonia:1:20  29.8   R 2.8463946 mg O2 gDW-1 hr-1 
9 Ecklonia 1  21 Ecklonia:1:21  10.3   R 0.5214549 mg O2 gDW-1 hr-1 
10 Ecklonia 1  21 Ecklonia:1:21  19.5   R 0.9994689 mg O2 gDW-1 hr-1"), header=F) 

a[a$V5 %in% names(table(a$V5))[table(a$V5) >= 3],] 
+0

이렇게 또한 작동합니다. 감사. –

관련 문제