2015-11-24 3 views
1

Я использую уравнение гравитации с различными типами фиксированных эффектов. Исходный фиксированный эффект, фиксированный эффект назначения и фиксированный эффект пары-источника-назначения.Вычисление фиксированных эффектов источника-назначения с R

Рассмотрим следующий пример

require(dplyr) 
mydf <- data_frame(orig = rep(LETTERS[1:3], each = 3), 
        dest = rep(LETTERS[1:3], times = 3)) 

происхождения и назначения фиксированные эффекты могут быть созданы с использованием коэффициентов

mydf <- mutate(mydf, 
       orig_fe = factor(orig), 
       dest_fe = factor(dest)) 

Теперь я хочу, чтобы выполнить ту же самую операцию по парам происхождения-назначения. Например, комбинация AB должна принимать такое же значение, как и комбинация BA. Конечно, эта переменная тоже должна быть фактором.

Ожидаемый результат заключается в следующем

mydf$pair_fe = as.factor(c('AA', 'AB', 'AC', 'AB', 'BB', 'BC', 'AC', 'BC', 'CC')) 

mydf 

#  orig dest orig_fe dest_fe pair_fe 
#  (chr) (chr) (fctr) (fctr) (fctr) 
# 1  A  A  A  A  AA 
# 2  A  B  A  B  AB 
# 3  A  C  A  C  AC 
# 4  B  A  B  A  AB 
# 5  B  B  B  B  BB 
# 6  B  C  B  C  BC 
# 7  C  A  C  A  AC 
# 8  C  B  C  B  BC 
# 9  C  C  C  C  CC 

ответ

2

Мы можем использовать pmax и pmin, чтобы получить построчно максимальные и минимальные значения, то paste векторы вместе, и преобразовать в factor класса.

mydf %>% 
    mutate(pair_fe= factor(paste0(pmin(orig,dest), pmax(orig,dest)))) 
# orig dest orig_fe dest_fe pair_fe 
# (chr) (chr) (fctr) (fctr) (fctr) 
#1  A  A  A  A  AA 
#2  A  B  A  B  AB 
#3  A  C  A  C  AC 
#4  B  A  B  A  AB 
#5  B  B  B  B  BB 
#6  B  C  B  C  BC 
#7  C  A  C  A  AC 
#8  C  B  C  B  BC 
#9  C  C  C  C  CC 
+1

Thanks akrun! Именно это я и сделал. Я не знал о 'pmin' и' max' :) – goclem

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