2017-05-23 15 views
0

데이터 세트 이름 : 샘플.그룹별로 하나의 지형지 물의 비율을 가져 오는 데 더 효과적인 코드는 무엇입니까?

COL1 : ID

Col2의 : 섹스 (2 레벨 "m", "F"로 계수)

열 3 :

SIU (2 레벨 "Y", "N"와 함께 인자)

SIU의 비율을 얻고 싶습니다.

prop.table(table(sample %>% filter(SIU=="N") %>% select(SEX))) 
prop.table(table(sample %>% filter(SIU=="Y") %>% select(SEX))) 

를하지만 2 번 실행해야하므로이 두 문장으로 구성 이 코드와 결과를 얻을 수 있습니다.

동일한 일을하는 더 나은 간단한 방법이 있습니까?

편집 : 위의 코드

>   m   f 
> 0.4529346622 0.5470653378 
>  m   f 
> 0.3604651163 0.6395348837 

그것은 내가 얻고 싶은 것입니다,하지만 난 내 코드가 가장 아니라고 생각의

결과.

+0

아마도 GROUP_BY (SIU)'와'(SIU는 "N"을 ==) '필터를 교체' – timfaber

+0

나는 섹스의 비율을 원하지만, 어쩌면 집계가 도울 수있는 방법 확실하지 않다 :'집계 (안양 $ (df ​​$ SIU), 함수 (x) 합계 (x == 'm')/길이 (x)) ' – Osdorp

+0

불명확 한 질문에 대해 사과드립니다. 나는 이렇게 원한다 : N : 0.45 (남성) 0.54 (여성), Y : 0.36 (남성) 0.64 (여성) –

답변

0
df <- data.frame(ID=c(1,3,4,5,3,4), SEX = c('m','f','m','f','f','f'), SIU= c('y','y','n','n','n','n')) 
aggregate(df$SEX, by=list(df$SIU), function(x) table(x)/length(x)) 
# Group.1 x.f x.m 
# 1 n 0.75 0.25 
# 2 y 0.50 0.50 
+0

나는 집계 기능에 대해 몰랐다. 고맙습니다!! –

+0

문제 없습니다, @ Ashtray. 귀하의 질문을 해결 한 경우 답변으로 표시하십시오. – Osdorp