2017-10-27 13 views
0

dplyr 패키지의 group_by 내부 요약 기능에 문제점이 있습니다. 나는이처럼 보이는 dataframe 얻기 위해 변수 "그룹"GROUP_BY 필요요약 변수 group_by 함수 내에서 문자열 변수에 n 배의 다른 변수 값을 곱하는 방법은 무엇입니까?

df <- read.table(text="id groups times strings 
1 1  a  1  xxx 
2 2  a  2  zzz 
3 3  a  1  yyy 
4 4  b  1  xxx 
5 5  b  1  yyy 
6 6  b  1  xxx 
7 7  c  3  yyy 
8 8  c  1  xxx 
9 9  c  1  xxx 
10 10  c  1  yyy", stringsAsFactors=FALSE) 

:

이 같은 dataframe는 모습입니다

view(group.df) 
    id2 groups2       c.string 
1 1  a    'xxx','zzz','zzz','yyy' 
2 2  b     'xxx','yyy','xxx' 
3 3  c 'yyy','yyy','yyy','xxx','xxx','yyy' 


str(group.df) 
'data.frame': 3 obs. of 3 variables: 
$ id2  : int 1 2 3 
$ groups2 : chr "a" "b" "c" 
$ c.string: chr "'xxx','zzz','zzz','yyy'" "'xxx','yyy','xxx'" 
"'yyy','yyy','yyy','xxx','xxx','yyy'" 

내 문제가 있다는 것입니다을 나는 돈 "df $ times"가> 1 일 때만 문자열 변수 "df $ strings"에 "df $ times"의 값을 곱하기 위해 group_by에 중첩 된 summarize 함수를 코딩하는 방법을 알지 못합니다.

도움 주셔서 감사합니다. 방금 id 컬럼을 무시하는 것처럼

답변

0

보인다, 그래서 이것은

df %>% 
    group_by(groups) %>% 
    summarize(c.string=paste(sQuote(rep(strings, times)), collapse=",")) 
# groups       c.string 
# <chr>        <chr> 
# 1  a    ‘xxx’,‘zzz’,‘zzz’,‘yyy’ 
# 2  b     ‘xxx’,‘yyy’,‘xxx’ 
# 3  c ‘yyy’,‘yyy’,‘yyy’,‘xxx’,‘xxx’,‘yyy’ 
작동합니다