Рассчитать среднюю разницу внутри и между группами - PullRequest
1 голос
/ 04 июня 2019

У меня есть два набора значений следующим образом:

x <- as.vector(c(1, 2, 3, 2, 1))
y <- as.vector(c(7, 7, 8, 9, 9))

Я пытаюсь рассчитать среднюю разницу значений в каждой группе, а также среднюю разницу значений между группами.

В этом небольшом примере средние различия будут для х, (1 + 2 + 1 + 0 + 1 + 0 + 1 + 1 + 2 + 1) / 10 = 10/10 = 1

И для тебя это будет (0 + 1 + 2 + 2 + 1 + 2 + 2 + 1 + 1 + 0) /10=12/10=1.2

Между группами было бы (6 + 6 + 7 + 8 + 8 + 5 + 5 + 6 + 7 + 7 + 4 + 4 + 5 + 6 + 6 + 5 + 5 + 6 + 7 + 7 + 6 + 6 + 7 + 8 + 8 ) /25=155/25=6.2

Я надеюсь, что есть какой-то способ сделать это с помощью более простого кода.

1 Ответ

1 голос
/ 04 июня 2019

Одна возможность может быть:

xy_diff <- abs(sapply(x, "-", y))
sum(xy_diff)/(dim(xy_diff)[1]*dim(xy_diff)[2])

[1] 6.2

x_diff <- abs(sapply(x, "-", x))
x_diff <- x_diff[upper.tri(x_diff)]
sum(x_diff/length(x_diff))

[1] 1

y_diff <- abs(sapply(y, "-", y))
y_diff <- y_diff[upper.tri(y_diff)]
sum(y_diff/length(y_diff))

[1] 1.2
...