2017-11-28 16 views
0
library(dplyr) ##activates the data.table library 

mydataWithWeeksAndWeights <- data_frame(ended = c("14/11/2016", 
                "14/11/2016", 
                "14/11/2016", 
                "02/01/2017", 
                "02/01/2017", 
                "15/11/2017", 
                "15/11/2017", 
                "16/11/2017", 
                "16/11/2017"), 
             week = c(46, 46, 46, 1, 1, 46, 46, 46, 46), 
             satisfactionLevel = c("Very dissatisfied", 
                   "Very satisfied", 
                   "Satisfied", 
                   "Dissatisfied", 
                   "Very dissatisfied", 
                   "Very satisfied", 
                   "Very dissatisfied", 
                   "Very Satisfied", 
                   "Very satisfied"), 
             weight = c(0, 1, 0.75, 0.25, 0, 1, 0, 1, 1)) 

에서 나는 GROUP_BY를 (사용 중복 된 항목)을 유지합니다. 문제는 처음 세 줄의 46 번째 주가 2016을 가리키고 나머지는 2017을 지칭한다는 것입니다.이 중복 항목을 유지하고 싶습니다.는 dplyr

+0

mydataWithWeeksAndWeights %> % group_by (주, 가중치) %> % 필터 (n()> 1)' – akrun

+2

년을 구별하고 싶습니다. "% d/% m/% Y", "% Y- % W"), 중량) %> % count (satisfactionLevel)' –

+0

@docendodiscimus 전설 !!! 건배 – Greconomist

답변

2

기대하는 결과를 얻지 못해서 내 코드가 원하는대로 작동하는지 확신 할 수 없지만 year 열을 추가하고 group_by에 추가하여 구분해야합니다. 2016의 주 46 주 46 편집

2017 년의 사이에서 : 당신이 자동으로 당신이 가지고있는 최종 날짜에서 연도를 정의해야하는 경우에, 나는 @의 docendodiscimus의 주석의 비트에 추가 해요 :

library(dplyr) 

mydataWithWeeksAndWeights <- data_frame(ended = c("14/11/2016", 
                "14/11/2016", 
                "14/11/2016", 
                "02/01/2017", 
                "02/01/2017", 
                "15/11/2017", 
                "15/11/2017", 
                "16/11/2017", 
                "16/11/2017"), 
             week = c(46, 46, 46, 1, 1, 46, 46, 46, 46), 
             satisfactionLevel = c("Very dissatisfied", 
                   "Very satisfied", 
                   "Satisfied", 
                   "Dissatisfied", 
                   "Very dissatisfied", 
                   "Very satisfied", 
                   "Very dissatisfied", 
                   "Very Satisfied", 
                   "Very satisfied"), 
             weight = c(0, 1, 0.75, 0.25, 0, 1, 0, 1, 1)) 

mydataWithWeeksAndWeights$year <- format(as.Date(mydataWithWeeksAndWeights$ended, 
               "%d/%m/%Y"), "%Y") 

pivotTable <- mydataWithWeeksAndWeights %>% 
    group_by(week, year, weight) %>% 
    count(satisfactionLevel) 
0

다음은 내가 수행 할 작업입니다. 형식을 "종료"하여 집계 함수를 사용하십시오 :

# just to shorten df-name 
df <- mydataWithWeeksAndWeights 

# reformat and add column with year 
df[,"ended"] <- as.Date(df[[1]], format = "%d/%m/%Y") 
df$year <- format(df[[1]], "%Y") 

# actual aggregating 
aggregate (df$weight, by = list(df$year, df$satisfactionLevel, df$week), FUN = sum) 

희망이 있습니다.