2013-08-12 2 views
2

У меня есть кадр данных, в котором я хочу найти повторное использование lengh of (x, y). Может ли кто-нибудь предложить мне самый быстрый способ его анализа. Например:R: Длина повторного использования

df <- data.frame(
    time=c(0,1,2,3,4,5,6), 
    x=c(1,4,2,1,6,1,4), 
    y=c(2,5,3,2,7,2,5) 
) 

Хочу среднее или медиану повторной встречаемости одного и того же (х, у)/

Здесь, (1,2) повторяется в момент времени 0, 3, 5. Таким образом, среднее значение = ((3-0) + (5-3))/2 = 2,5 И среднее значение для (4,5) равно 5.

Таким образом, средний показатель составляет 3,75.

Может кто-нибудь предложить, как это сделать?

Спасибо.

ответ

2

Может быть, вы ищете что-то вроде этого:

out <- aggregate(time ~ x + y, df, function(blah) { 
    mean(diff(blah)) 
}) 
out 
# x y time 
# 1 1 2 2.5 
# 2 2 3 NaN 
# 3 4 5 5.0 
# 4 6 7 NaN 
sum(out$time, na.rm=TRUE) 
# [1] 7.5 

data.table подход:

library(data.table) 
DT <- data.table(df, key = "x,y") 
DT[, mean(diff(time)), by = key(DT)][, sum(V1, na.rm=TRUE)] 
# [1] 7.5 
+0

Лучше использовать 'время ~ х * y'. – Roland

+0

И, возможно, другое имя параметра для функции, чтобы избежать путаницы ... – Roland

+0

@Roland, спасибо. Не заметила зависимость от x и y как идентификационных знаков. Для 'aggregate' это обычно означает' x + y' не 'x * y' для метода формулы. – A5C1D2H2I1M1N2O1R2T1

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