按组添加 ID 列
问题描述:
我想根据两列纬度和经度在 R 中创建一个唯一 ID,以便重复的位置具有相同的集群 ID.
I want to create an unique ID in R based on two columns of latitude and longitude so that duplicated locations have the same cluster ID.
例如:
LAT LONG Cluster_ID
13.5330 -15.4180 1
13.5330 -15.4180 1
13.5330 -15.4180 1
13.5330 -15.4180 1
13.5330 -15.4170 2
13.5330 -15.4170 2
13.5330 -15.4170 2
13.5340 -14.9350 3
13.5340 -14.9350 3
13.5340 -15.9170 4
13.3670 -14.6190 5
答
这是使用 interaction
的一种方法.
Here's one way using interaction
.
d <- read.table(text='LAT LONG
13.5330 -15.4180
13.5330 -15.4180
13.5330 -15.4180
13.5330 -15.4180
13.5330 -15.4170
13.5330 -15.4170
13.5330 -15.4170
13.5340 -14.9350
13.5340 -14.9350
13.5340 -15.9170
13.3670 -14.6190', header=TRUE)
d <- transform(d, Cluster_ID = as.numeric(interaction(LAT, LONG, drop=TRUE)))
# LAT LONG Cluster_ID
# 1 13.533 -15.418 2
# 2 13.533 -15.418 2
# 3 13.533 -15.418 2
# 4 13.533 -15.418 2
# 5 13.533 -15.417 3
# 6 13.533 -15.417 3
# 7 13.533 -15.417 3
# 8 13.534 -14.935 4
# 9 13.534 -14.935 4
# 10 13.534 -15.917 1
# 11 13.367 -14.619 5
合并了@Spacedman 的建议,将 drop=TRUE
提供给 interaction
.
Incorporated @Spacedman's suggestion to supply drop=TRUE
to interaction
.