Я хочу обобщить некоторые переменные в моем кадре данных на основе столбца. Однако мой кадр данных довольно большой ( > 30 000 000 строк), и использование функции суммирования в dplyr требует возраста для запуска. Есть ли более быстрый способ в R ускорить процесс суммирования?
У меня есть формат данных df в формате:
proid X1 X2 X3 X4
1 1 zz a e a
2 2 ff g z b
3 1 cd s f d
4 3 ab t e e
5 2 ta b h k
....
Я хочу объединить переменные X1-X4, когда они имеют одинаковое значение prodid. Конкатенированные строки разделяются запятыми. Поэтому приведенная выше таблица должна дать мне новую таблицу:
proid X1 X2 X3 X4
1 1 zz,cd a,s e,f a,d
2 2 ff,ta g,b z,h b,k
3 3 ab t e e
....
Я использовал следующий код dplyr:
concat <- function(x){
x <- na.omit(x)
if(length(x)==0){
return(as.character(NA))
}else{
return(paste(x,collapse=","))
}
}
dg<-group_by(df,proid)
df<-summarise(dg,proid,concat(X1),concat(X2),concat(X3),concat(X4))