2014-10-17 3 views
3

У меня есть ниже ф.р.перепрофилирования dataframe - две колонки от корреляции переменных

var1 var2 Freq 
1 a b 10 
2 b a 5 
3 b d 10 

создан из

аб корреляция такая же, как ба, и я надеюсь, чтобы объединить их в одну строку на вид

var1 var2 Freq 
1 a b 15 
2 b d 10 

любые мысли?

+0

С помощью 'stringsAsFactors = false', вы можете изменить' var1 = рмин (var1, var2) и 'var2 = рты (var1, var2)', после чего агрегирования должно быть простым. – Arun

ответ

2

Вот один из способов:

setNames(aggregate(help$Freq, as.data.frame(t(apply(help[-3], 1, sort))), sum), 
     names(help)) 

# var1 var2 Freq 
# 1 a b 15 
# 2 b d 10 
+0

Спасибо, Свен. Можете ли вы объяснить, что означает помощь [-3]? – bpace

+0

@bpace Команда 'help [-3]' является примером отрицательной индексации. Он возвращает все столбцы «help», кроме третьего. –

+0

Отлично ... Спасибо! – bpace

0

В базовой R:

do.call(rbind, 
by(dat,rowSums(sapply(dat[,c("var1","var2")],as.integer)), 
    function(x)data.frame(x[1,c("var1","var2")], 
         Freq= sum(x[,"Freq"])))) 

    var1 var2 Freq 
3 a b 15 
5 b d 10 

создать первую группирование переменного путем суммирования целого представления ваших колонок. Затем выполняем сумму частот по группам. Наконец, свяжите результат, чтобы получить новый data.frame.

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