2017-11-07 3 views
0

이것이 내 데이터의 모양입니다. 'df'라고 부르세요. 일부 특정 날짜에 대해 작성된 'id'의 수를 계산하려고합니다 (2017-11-04). 똑같이 나는 동일한 날짜, 즉 2017-11-04에 대해 '전달 된'날짜 및 로직 수를 계산하려고합니다. 언급 한 날짜 (2017-11-04)가 예제로 사용되었지만 '날짜'열에서 언급 된 모든 날짜를 집계하고 싶습니다.날짜 열을 기준으로 열을 집계하는 방법

date   id  passed  logic 
2017-11-04  101  2017-11-06 1 
2017-11-04  102  2017-11-06 0 
2017-11-04  103  2017-11-08 1 
2017-11-05  104  NA   NA 

PS-2 :이 질문은 어떤 편집을 요구하는 경우, 코멘트를 넣어주세요 그래서 난 그냥, R을 시작 스택 및 기본 구문/규칙을 인식하지 않았습니다. 나는 필요한 변경을해야한다.

+1

에 오신 것을 환영합니다! [좋은 질문을하는 법] (http://stackoverflow.com/help/how-to-ask) 및 [재현 가능한 예] (http://stackoverflow.com/questions/)에 대한 정보를 읽어보십시오. 5963269). 이렇게하면 다른 사람들이 당신을 도울 수있게됩니다. – Sotos

+0

@Sotos에 감사드립니다. 나는 링크를 통해 갈 것이다. –

답변

0

당신이 반환됩니다 group_by()를 사용 date으로 그룹에 dataframe를 패키지 dplyr을 사용하고 summarise()

library(dplyr) 

df %>% 
    group_by(date) %>% 
    summarise(number_of_ids = length(id), 
      number_of_passed_date = length(passed[!is.na(passed)]), 
      logic = sum(logic, na.rm = TRUE)) 

사용하여 요약 할 수 있습니다 :

# A tibble: 2 x 4 
     date number_of_ids number_of_passed_date logic 
     <date>   <int>     <int> <int> 
1 2017-11-04    3      3  2 
2 2017-11-05    1      0  0 
+0

효과가있었습니다. 고마워요. 전에 dplyr을 사용한 적은 한번도 없었습니다. –

+0

좋아요, 이전 출력은 답안에 정확히 나와 있었지만 갑자기 쿼리를 다시 실행했을 때 출력에 날짜 열이 표시되지 않고 3 열만있는 행 1 개! 왜 이런 일이 일어나는가? –

0

내가 당신을 오해하지 않은 경우, 각기 다른 값을 집계하려고합니다. df$date

df <- read.table(text="date,id,passed,logic 
2017-11-04,101,2017-11-06,1 
2017-11-04,102,2017-11-06,0 
2017-11-04,103,2017-11-08,1 
2017-11-05,104,NA,NA", sep=",", header=TRUE, stringsAsFactors=FALSE) 

aggregate(df, by=list(df$date), FUN=function(x) {sum(!is.na(unique(x)))}) 

출력 : StackOverflow의에

 Group.1 date id passed logic 
1 2017-11-04 1 3  2  2 
2 2017-11-05 1 1  0  0 
관련 문제