R: Создать идентификатор на основе двух разных переменных - PullRequest
0 голосов
/ 30 ноября 2018

Я новичок, пытаюсь работать с R, но постоянно бью по стенам.

У меня есть гигантский набор данных (тысячи записей), который выглядит следующим образом: есть столбцы для Latitude, Longitude и PlotCode.

Table

У меня более одного графика на долготу и широту.Я хотел бы создать новый столбец с каким-то идентификатором для всех графиков с одинаковой широтой и долготой.

Что-то, что будет выглядеть примерно так:

Table 2

Есть предложения?Спасибо.

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Добро пожаловать на ТАК!Лучше добавить данные, желаемые результаты, попытки и так далее в вашем вопросе.Однако, возможно, вы сможете найти решение с пакетом dplyr.

После его установки вы можете сделать следующее:

library(dplyr)
  # some data like yours
    data_latlon <- data.frame(Lat = c(1,1,1,2,2,2,3,3,3)
                              , Long = c(45,45,45,12,12,12,23,23,23)
                              , PlotCode = c('a','a','a','b','b','b','c','c','c'))

data_latlon %>%                                            # the pipe operator to have dplyr chains                                      
group_by(Lat,Long) %>%                                     # group by unique Lat and Long
summarise(PlotCodeGrouped = paste(PlotCode,collapse=''))   # add a new column that collapse all the plot,
                                                           # you can specify how to separate 
                                                           # with the collapse option, in 
                                                           # this case nothing
# A tibble: 3 x 3
# Groups:   Lat [?]
    Lat  Long PlotCodeGrouped
  <dbl> <dbl> <chr>          
1     1    45 aaa            
2     2    12 bbb            
3     3    23 ccc  

РЕДАКТИРОВАТЬ

Код проще, чем вам хотелось бы получить:

data_latlon %>%                         # the pipe operator to have dplyr chains                                      
  group_by(Lat,Long, add=TRUE)          # group by unique Lat and Long
                                        # and add a ""hierarchical father"

# Groups:   Lat, Long [3]
    Lat  Long PlotCode
  <dbl> <dbl> <fct>   
1    1.   45. a       
2    1.   45. a       
3    1.   45. a       
4    2.   12. b       
5    2.   12. b       
6    2.   12. b       
7    3.   23. c       
8    3.   23. c       
9    3.   23. c   
0 голосов
/ 30 ноября 2018

Я думаю, что нашел решение, мне нужно что-то, называемое ID кластера.

dataframe <- transform(dataframe, Cluster_ID = as.numeric(interaction(Lat, Long, drop=TRUE)))
0 голосов
/ 30 ноября 2018

Под группировкой вы подразумеваете сортировать / упорядочивать их по PlotCode?

Если вы можете использовать функцию сортировки или использовать функцию упорядочения через пакет tidyverse / dplyr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...