2016-07-13 5 views
4

내가 가진 이런 dataframe :그룹과 목록에 열을 요약

sample_df<-data.frame(
    client=c('John', 'John','Mary','Mary'), 
    date=c('2016-07-13','2016-07-13','2016-07-13','2016-07-13'), 
    cluster=c('A','B','A','A')) 

#sample data frame 
    client date   cluster 
1 John 2016-07-13 A 
2 John 2016-07-13 B 
3 Mary 2016-07-13 A 
4 Mary 2016-07-13 A    

내가 될 것이다, 다른 형식으로 변환하고 싶습니다 같은 :

#ideal data frame 
    client date   cluster 
1 John 2016-07-13 c('A,'B') 
2 Mary 2016-07-13 A 

들어 'cluster'열은 일부 클라이언트가 같은 날짜에 다른 클러스터에 속한 경우 목록이됩니다.

나는 그러나, 나는이 상황에서 익명 함수를 작성하는 방법을 몰라 내가

library(dplyr) 
ideal_df<-sample %>% 
    group_by(client, date) %>% 
    summarize(#some anonymous function) 

아래와 같이 표창과 dplyr 패키지와 함께 할 수 있습니다 생각했다. 데이터를 이상적인 형식으로 변환하는 방법이 있습니까?

우리는 list

r2 <- sample_df %>% 
     group_by(client, date) %>% 
     summarise(cluster = list(unique(cluster))) 

을 생성하는 것입니다 함께 '클라이언트'

r1 <- sample_df %>% 
     group_by(client, date) %>% 
     summarise(cluster = toString(unique(cluster))) 

또는 다른 옵션으로 그룹화 한 후 '클러스터'의 unique 요소를 CONCAT하는 toString을 사용할 수 있습니다

답변

7

있는 우리 can unnest

library(tidyr) 
r2 %>% 
    ungroup %>% 
    unnest() 
+1

많은 @akrun! 그것은 효과가 있었다. –