2013-07-30 5 views
0

데이터 세트를 여러 그룹으로 나눠서 백분율 열의 값보다 크거나 같은 행을 찾는 방법을 알고 싶습니다 (참고 : 데이터 프레임에 다른 열이 있습니다.R에서 이미 분할 된 그룹에서 행별로 데이터를 필터링하는 방법은 무엇입니까?

Opportunity.Name: Percentage 
Bob     50 
Bob     60 
Bob     20 
Bob     80 
Bob     90 
Bob     100 
Jon     100 
Jon     90 

gdata$'Bob'  
Opportunity.Name Percentage 
Bob     50 
Bob     60 
Bob     20 
Bob     80 
Bob     90 
Bob     100 

내가 나를 (50, 60)를 필터링 할 수 있도록 몇 가지 기능을 적용 할 것이며, 20 퍼센트 : 단지

gdata <- split(data, Opportunity.Name) 

Dataframe)이 더 많은 단체와 (과 같다) 표시되지 행을 만들고 다른 값을 유지합니다 (그리고 내가 만든 모든 그룹에 대해 수행합니다). 감사!

+0

"그래서 난 내 데이터가 여러 그룹으로 설정 분할"- 왜? 그 일을할만한 가치가있는 경우는 많지 않습니다 (물론 계산을 수행하지 않아도됩니다). – eddi

+0

기회 이름별로 중간 값/평균값/합계를 계산해야하고 나중에 전체 데이터 세트의 평균값/평균값/평균값을 취해야합니다. 더 쉬운/다른 방법이 있다면, 나는 알고 싶습니다 !! – user2634937

+0

네, 훨씬 더 좋은 방법이 있습니다. 하나는'data.table'을 사용하는 것입니다. 'dt = data.table (your_df);의 라인을 따라 뭔가가있다. 평균, 백분율 = 중앙값, 평균 = 백분율, 평균 = 백분율, 평균 = 백분율, 평균 = 백분율, 평균 = 그래서 주위에 검색 및 'data.table'에 대해 구글과 질문이 있다면 - 당신은 아는 곳 : – eddi

답변

2

이 시도 :

lapply(gdata, function(x){x[x$Percentage>=70,]}) 

을 제공합니다 :

$Bob 
    Opportunity.Name Percentage 
4    Bob   80 
5    Bob   90 

$Jon 
    Opportunity.Name Percentage 
6    Jon  100 
7    Jon   90 

UPDATE를 : 비율이 제로 기록을 유지하려면 파이프 연산자와 함께 or 절을 추가 :

lapply(gdata, function(x){x[x$Percentage>=70 | x$Percentage==0,]}) 

또는 원하는 경우 subset 구문을 사용하여 동일한 결과를 얻을 수 있습니다. 결과 : 당신은 당신이 사용할 수 싶지 않았다 값 것에 대해 매우 구체적인 있다면

lapply(gdata, function(x){subset(x, Percentage>=70 | Percentage==0)}) 
+0

그것은 좋아 보인다! 특정 가치를 지키는 방법이 있습니까? (모든 값을 70 이상으로 유지하고 0의 값을 유지하려고합니다.) – user2634937

+0

내 업데이트 된 답변을 참조하십시오. –

+0

고마워요! 슈퍼 유용한 답변. – user2634937

0

d <- subset(gdata, Percentage != 50 & Percentage != 60 & Percentage !=20) 
+0

1) gdata는 데이터 프레임이 아닌 목록입니다. 그러나이 부분 집합을'data' 객체에 적용한 다음 원하는 결과를 얻기 위해'split'을 적용 할 수 있습니다. 2)'! ='절을 함께 쓰는 대신에 왜'Percentage> = 70'을 쓰는 것이 좋을까요? –

+0

사용자가 특정 백분율 값을 가진 행을 제거하려는 경우이 옵션을 의미했습니다. 70 % 미만의 가치인지에 대한 질문은 명확하지 않습니다. – user2510479

+0

실제로 첫 번째 줄에는 "70보다 크거나 같음"사양이 제공되었습니다. 그리고 여전히 gdata 객체 인 목록에서 하위 집합을 사용할 수 없기 때문에 솔루션에서 오류가 반환됩니다. –

관련 문제