2016-10-15 1 views
3

만의 고유 항목을 유지 :같은 ID를 가진 행을 집계하고 난 다음 나는 R의 데이터 프레임을 가지고 R.에서 초보자 오전 R

Id   Values 
A_0_d Low_5524; Low_6412; Hi_50567 
A_0_d Low_5509; Low_6412; Low_6897; Hi_16021 
A_0_d Low_5524; Low_4930; Low_5886 
B_1_d Low_3697; Low_4519; Low_5524 
C_3_d Low_5576; Low_5581 
C_3_d Hi_30246 
C_3_d Low_5576; Hi_30246 

나는 IDS 예에 따라 데이터 프레임을 집계 싶습니다 그룹 만의 고유 항목이 좋아하는 모든 단일 행에서 같은 ID의 값과 유지는 다음과 같습니다

A_0_d Low_5524; Low_6412; Hi_50567; Low_5509; Low_6897; Hi_16021; Low_4930; Low_5886 
B_1_d Low_3697; Low_4519; Low_5524 
C_3_d Low_5576; Low_5581; Hi_30246 

내가 집계 function.Kindly의 사용이 나를 인도 할 수 있습니다.

답변

2

'data.frame'을 'data.table'(setDT(df1))로 변환하십시오. 그런 다음, aggregate를 사용 split 'IDS', unlist으로 출력을 그룹화 한 후 "; "로 '가치', 얻을 unique 요소와 함께 paste

library(data.table) 
setDT(df1)[, .(Values = paste(unique(unlist(strsplit(Values, "; "))), 
               collapse="; ")), by = Id] 
# Id 
#1: A_0_d 
#2: B_1_d 
#3: C_3_d 
#                   Values 
#1: Low_5524; Low_6412; Hi_50567; Low_5509; Low_6897; Hi_16021; Low_4930; Low_5886 
#2:             Low_3697; Low_4519; Low_5524 
#3:             Low_5576; Low_5581; Hi_30246 
3

당신이

aggregate(Values ~ Id, df, function(x) paste(unique(x), collapse = '; ')) 
2

aggregate를 사용하여 시도 할 수 너는 할 수있다

aggregate(Values~Id, df, function(x) unique(unlist(strsplit(x, ";")))) 

# Id                   Values 
#1 A_0_d Low_5524, Low_6412, Hi_50567, Low_5509, Low_6897, Hi_16021, Low_4930, Low_5886 
#2 B_1_d             Low_3697, Low_4519, Low_5524 
#3 C_3_d             Low_5576, Low_5581, Hi_30246 
관련 문제