我是一个尝试使用R的初学者,但是经常碰壁。
我有一个庞大的数据集(成千上万个条目),看起来像这样:有一个用于纬度,经度和PlotCode的列。
每个经度和纬度有多个图。我想为具有相同纬度和经度的所有图创建一个具有某种ID的新列。
最终会是这样的:
有什么建议吗?谢谢。
答案 0 :(得分:1)
欢迎您!最好在问题中添加数据,所需的输出,尝试等。但是,也许您可以使用软件包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
答案 1 :(得分:1)
我想我找到了解决方案,我需要的是称为集群ID的东西。
dataframe <- transform(dataframe, Cluster_ID = as.numeric(interaction(Lat, Long, drop=TRUE)))
答案 2 :(得分:0)
按分组的意思是按PlotCode排序/排列它们?
如果可以,则可以使用排序功能,也可以通过以下方式使用排序功能 tidyverse / dplyr软件包