2016-11-30 1 views
-5

나는 R을 사용하고 같은R 카운트 행은

Record_Num STR 
1    ABC 
1    ABC 
1    EFG 
2    HIJ 
2    HIJ 
2    KLM 
3    KLM 
3    KLM 
3    KLM 

나는 각 레코드 번호에 대한 각각의 STR에 대한 카운트를 얻기 위해 시도하고 같은 데이터 프레임을, 그래서하고이 같은 :

Record_Num STR Count 
1    ABC 2 
1    EFG 1 
2    HIJ 2 
2    KLM 1 
3    KLM 3 

나는 내가 필요하지만, 내 다음 단계는 단순히 그때 루프를 만드는 데 사용할 각 STR (의 최대 수를 걸러 무엇을 얻을 수있는 조치를 취할 수 있음을 얻을 수 있다면 - 나는 아주 지저분한 데이터를 정리하려고 노력하고있다). 내가 그것을 하나의 단계로 통합 할 수 있다면 더 좋아질 것이지만 나는 그것에 대해 걱정하지 않는다. 나는 위의 문제를 해결할 수없는 것 같습니다. 내가 극단적 인 초심자 인 것을 감안할 때. 나는 테이블과 탁자로 장난 꾸러기를했지만, 제대로 이해하지 못했습니다. 아무도 도와 줄 수 있니?

나는 이것이 매우 초보적이라는 것을 알고 있으며, 초보자 용 질문에 대해서는 매우 유감스럽게 생각합니다.

+0

이 질문은 요청 된 여러 번 (http://stackoverflow.com/questions/7450600/count-number-of-observations-rows-per-group-and-add-result-to - 데이터 - 프레임) 및 [여기] (http://stackoverflow.com/questions/25293045/count-number-of-rows-in-a-data-frame-in-r-based-on-group), for 예. – Uwe

답변

1

당신은 다음을 수행 할 수 있습니다

Record_Num STR Count 
1   1 ABC  2 
2   1 EFG  1 
3   2 HIJ  2 
4   2 KLM  1 
5   3 KLM  3 
+0

이것은 완벽하게 작동합니다. 정확하고 빠른 응답을 해주셔서 감사합니다! – fleetmack

2

심지어 간단한 : 당신에게 제공

require(dplyr) 
dat %>% 
    group_by(Record_Num, STR) %>% 
    summarise(Count = n()) 

당신이 data.table를 사용하는 경우

library(dplyr) 

count(dat, Record_Num, STR) 
+0

정확하고 빠른 응답 덕분에 완벽하게 작동합니다! – fleetmack

+0

좋은 해결책. 그룹화하지 않고도 더 간단합니다. – Rentrop

1

이 매우 쉽습니다 . [여기]

setDT(dat) 
dat[,.(Count =.N), by=.(STR, Record_Num)] 
+1

이것은 완벽하게 작동합니다 (group by 절에 record_num을 추가하면). 정확하고 빠른 응답을 주셔서 감사합니다! – fleetmack