Привет, У меня есть много файлов CSV для обработки. Каждый файл генерируется путем запуска алгоритма. Мои данные всегда имеет один ключ и значение, как это:Объединение кадров данных в R
csv1:
index value
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
csv2:
index value
1 4 3
2 5 3
3 6 3
4 7 3
5 8 3
Теперь я хочу, чтобы объединить эти данные в формате CSV, например:
Если оба файла содержат идентичный ключ, например 5, результирующая строка должна содержать ключ как общий ресурс файлов (5), так и среднее значение обоих значений ((1 + 3)/2 = 2). Если только один файл содержит ключ (например, 2), эта строка просто добавляется в таблицу результатов (ключ = 2, значение = 1).
Что-то вроде этого:
index value
1 1 1
2 2 1
3 3 1
4 4 2 (as (1+4)/2 = 2)
5 5 2 (as (1+4)/2 = 2)
6 6 3
7 7 3
8 8 3
Сначала я думал, что rbind()
делает работу, но это не агрегирует значения, только объединяющее данные. Как я могу достичь этого с помощью R?
'rbind', то' aggregate' – James
Вы должны, вероятно, просто сделать это двумя отдельными шагами - 1) Объединить значения в одну структуру (которую вы использовали с помощью rbind) и 2) Совокупность на основе индекса. Вы можете легко сделать шаг 2, используя что-то вроде ddply (из пакета plyr) или нарезать или заполнить. – Dason
с использованием 'aggregate (. ~ Index, data = rbind (data1, data2), mean)' делает то, что я хочу, thx! –