Вот пример кадра данных:
set.seed(0)
x1 <- c(1, 1, 1, 1, 1, 2, 2, 2, 2)
x2 <- c(1, 1, 0, 0, 0, 1, 1, 1, 1)
x3 <- c(1, 1, 2, 2, 4, 1, 1, 2, 1)
n <- c(1, 1, 1, 5, 5, 1, 1, 1, 1)
y <- rnorm(9)
mydf <- data.frame(x1, x2, x3, n, y)
Я хотел бы сделать следующее:
- идентифицировать строки с n = 1 и имеющие одинаковые значения (x1, x2, x3)
- возвращает одну строку для каждого подмножества с y = mean (y) и n = length (y)
- , оставляя другие строки одинаковыми.
например, новый фрейм данных будет
x1 <- c(1, 1, 1, 1, 2, 2)
x2 <- c(1, 0, 0, 0, 1, 1)
x3 <- c(1, 2, 2, 4, 1, 2)
n <- c(2, 1, 5, 5, 3, 1)
y <- c(mean(y[1:2]), y[3], y[4], y[5], mean(y[c(6:7,9)]), y[8])
newdf <- data.frame(x1, x2, x3, n, y)
Я могу понять это с помощью условных выражений и циклов, но я бы предпочел изучить более элегантный способ сделать это.