Я хочу создать сортировку моего фрейма данных по всем уникальным сайтам и перечислить все значения в другом столбце (без выполнения каких-либо функций для этих значений). Значения для каждого сайта будут разной длины. Я хочу, чтобы значения были числовыми, чтобы впоследствии я мог выполнять некоторые манипуляции с данными (например, графические диаграммы).
Я могу использовать tidyverse и создать строку из неровных символов.
Пример данных
a<-data.frame(c(41.14542,41.14542,41.14542,41.14542,41.14542),
c(-74.1129,-74.1129,-74.1129,-74.1129,-74.1129), c(89,36,20,26,35))
colnames(a)<-c("LAT","LONG","value")
b<-data.frame(c(43.00309,43.00309,43.00309),
c(-75.02384,-75.02384,-75.02384), c(1,17,20))
colnames(b)<-c("LAT","LONG","value")
c<-data.frame(c(43.17203,43.17203), c(-77.52824,-77.52824), c(2,2))
colnames(c)<-c("LAT","LONG","value")
samp_data<-rbind(a,b,c)
Код, который я пробовал
library(tidyverse)
samp<-samp_data %>% group_by(LAT, LONG) %>% mutate(value_string = paste(value, collapse = ",")) %>% select(LAT, LONG, value_string) %>% unique()
Это дает мне такой результат:
LAT LONG value_string
<dbl> <dbl> <chr>
1 41.1 -74.1 89,36,20,26,35
2 43.0 -75.0 1,17,20
3 43.2 -77.5 2,2
* Я не знаю, почему он округляет мои значения LAT / LONG.
Мне нужно, чтобы третий столбец был числовым, а не строкой символов. Так что-то вроде этого будет работать (обратите внимание на класс value_string):
LAT LONG value_string
<dbl> <dbl> <dbl>
1 41.1 -74.1 89,36,20,26,35
2 43.0 -75.0 1,17,20
3 43.2 -77.5 2,2
Я смотрел на агрегат (кажется, требует применения какой-то функции), играл со списками (у меня были проблемы с неравной длиной для каждого сайта), но я не мог заставить их работать.
Кроме того, я не хочу агрегировать, то есть сайт (43.17203, -77.52824) должен отображаться дважды, а не рассматриваться как одна строка. Так что это не было бы идеально:
LAT LONG value_string
<dbl> <dbl> <chr>
1 41.1 -74.1 89,36,20,26,35
2 43.0 -75.0 1,17,20
3 43.2 -77.5 2
(строка 3 только с одним значением вместо двух значений).
Заранее спасибо!