2017-02-06 5 views
0

у меня есть набор данных со следующей информацией:Агрегирование в R с условиями

> Column1 Column2 Sum 
a   b  50 
b   a   7 
c   a   1 
d   e   8 
c   a   2 

Я хочу объединить, чтобы получить этот результат:

> Column1 Column2 Sum 
a   b  57 
c   a   3 
d   e   8 

Поскольку a-b его то же, что b-a

Любой способ сделать это? Благодаря

+0

Привет @Jaap я не нашел эту информацию раньше. не могли бы вы отправить мне эту ссылку? спасибо – RMteam

+0

[см. здесь] (http://stackoverflow.com/search?q=%5Br%5D+apply+sort+aggregate+sum) – Jaap

+0

Я нашел http://stackoverflow.com/questions/28360148/take-sum -of-a-variable-if-combination-of-values-in-two-other-columns-are-unique – RMteam

ответ

1

Мы можем использовать aggregate после sort ИНГ первого два столбца по строкам

df1[1:2] <- t(apply(df1[1:2], 1, sort)) 
aggregate(Sum~., df1, FUN = sum) 

Или с помощью pmax/pmin

library(dplyr) 
df1 %>% 
    group_by(Col1 = pmin(Column1, Column2), Col2 = pmax(Column1, Column2)) %>% 
    summarise(Sum = sum(Sum)) 
+1

Есть ли улучшение производительности, выполняющее 't (apply (df1 [1: 2], 1, sort)) 'вместо' apply (df1 [1: 2], 2, sort) '? – GGamba

Смежные вопросы