Примеры данных. Я не уверен, как использовать систему кодовых блоков на SO еще.R Кадр данных подмножества и выполнять функцию на основе столбцов
df <- data.frame(c(1,1,1,2,2,2,3,3,3),c(1990,1991,1992,1990,1991,1992,1990,1991,1992),c(1,2,3,3,2,1,2,1,3))
colnames(df) <- c("id", "year", "value")
Это генерирует простую матрицу.
id year value
1 1990 1
1 1991 2
1 1992 3
2 1990 3
2 1991 2
2 1992 1
3 1990 2
3 1991 1
3 1992 3
я перебирать R Подменит вопросы, и не мог понять, второй шаг в ddply функции {plyr}, приложенной к нему.
Логика: для всех подгрупп ID найдите самое высокое значение (которое равно 3) в самый ранний момент времени.
Я смущен относительно того, какой синтаксис использовать здесь. От поиска SO я думаю, что ddply - лучший выбор, но не может понять, как это сделать. В идеале, мой вывод должен быть вектором UNIQUE ID (как только один выбран, с целым рядом, взятым с ним. Это не работает в R для меня, но его лучшая «логика» я мог бы придумать.
ddply((ddply(df,id)), year, which.min(value))
Например
id year value
1 1992 3
2 1990 3
3 1992 3
Если 3 нет в наличии, следующий по величине (2 или 1) должны быть приняты. Любые идеи?
Спасибо! Я еще не записал много функций в R, так что там я и попался. Если я это понимаю, ddply генерирует кадр данных, который можно манипулировать с помощью оператора функции (как вы указали выше). – ashah57
Точно, 'ddply' разбивается на data.frames, которые передаются функции. Функция возвращает data.frames в 'ddply', что в свою очередь объединяет их. – Roland
Я вернулся к этой функции, которую вы написали 4 раза - это было прекрасно, Роланд. – ashah57