R은 :

2014-11-20 3 views
0

가 나는 곳 col3-, 다음과 안양을 만들기 위해 여분의 3 열 값을 "BBB"와 "DDD"R은 :

col1 col2 col3 
    u1 1 aaa 
    u1 1 bbb 
    u1 1 bbb 
    u1 1 bbb 
    u1 1 ccc 
    u1 -1 ddd 
    u1 -1 ddd 

다음과 같은 DF를, 소원 한 데이터 프레임에 기존 행을 대체 행을 rbind 중복 행 COL2와 함께 하나의 행에 의해 대체된다 = SUM을 대체 행의 :

col1 col2 col3 
    u1 1 aaa 
    u1 3 bbb 
    u1 1 ccc 
    u1 -2 ddd 

사전에 감사

답변

2

0,123,516 시도
library(dplyr) 
df %>% 
     group_by(col1, col3) %>% 
     summarise(col2=sum(col2)) 

# col1 col3 col2 
#1 u1 aaa 1 
#2 u1 bbb 3 
#3 u1 ccc 1 
#4 u1 ddd -2 

또는 사용 data.table

library(data.table) 
setDT(df)[, list(col2=sum(col2)), by=list(col1, col3)] 

또는 사용 sqldf

library(sqldf) 
sqldf('SELECT col1, col3, 
     sum(col2) as col2 
     from df 
     group by col1, col3') 
# col1 col3 col2 
#1 u1 aaa 1 
#2 u1 bbb 3 
#3 u1 ccc 1 
#4 u1 ddd -2 

또는 사용 base R

aggregate(.~col1+col3, df, sum) 
# col1 col3 col2 
#1 u1 aaa 1 
#2 u1 bbb 3 
#3 u1 ccc 1 
#4 u1 ddd -2