R中的平均坐标点?
Average Coordinate Points in R?
我有一个 .csv 的物种出现和单个经纬度点,但我试图将它们全部聚合成每个物种的单一 'average' 坐标点。从一些挖掘中我发现简单的平均值可能存在问题(高海拔或低海拔异常值可能会导致问题)。有人对如何在 R 中执行此 easily/quickly 有建议吗?谢谢
数据是这样显示的,但我总共出现了 71,000 多次。
物种
经度
纬度
冷杉
-111.112964
41.199112
亚利桑那冷杉
-110.8678
37.0349
双叶冷杉
-111.650833
41.82
双叶冷杉
-113.377722
41.950833
正在使用
your_data <- tibble::tribble(~species, ~longitude, ~latitude, "Abies amabilis", -111.112964, 41.199112, "Abies arizonica", -110.8678, 37.0349, "Abies bifolia", -111.650833, 41.82, "Abies bifolia", -113.377722, 41.950833)
你可以
aggregate(. ~ species, your_data, mean)
计算平均值。这个returns:
species longitude latitude
1 Abies amabilis -111.1130 41.19911
2 Abies arizonica -110.8678 37.03490
3 Abies bifolia -112.5143 41.88542
或者,dplyr
可用于
library(dplyr)
your_data %>%
group_by(species) %>%
summarize(across(.fns = mean))
同样returns
# A tibble: 3 x 3
species longitude latitude
<chr> <dbl> <dbl>
1 Abies amabilis -111. 41.2
2 Abies arizonica -111. 37.0
3 Abies bifolia -113. 41.9
使用data.table
library(data.table)
setDT(df1)[, lapply(.SD, mean), species]
我有一个 .csv 的物种出现和单个经纬度点,但我试图将它们全部聚合成每个物种的单一 'average' 坐标点。从一些挖掘中我发现简单的平均值可能存在问题(高海拔或低海拔异常值可能会导致问题)。有人对如何在 R 中执行此 easily/quickly 有建议吗?谢谢
数据是这样显示的,但我总共出现了 71,000 多次。
物种 | 经度 | 纬度 |
---|---|---|
冷杉 | -111.112964 | 41.199112 |
亚利桑那冷杉 | -110.8678 | 37.0349 |
双叶冷杉 | -111.650833 | 41.82 |
双叶冷杉 | -113.377722 | 41.950833 |
正在使用
your_data <- tibble::tribble(~species, ~longitude, ~latitude, "Abies amabilis", -111.112964, 41.199112, "Abies arizonica", -110.8678, 37.0349, "Abies bifolia", -111.650833, 41.82, "Abies bifolia", -113.377722, 41.950833)
你可以
aggregate(. ~ species, your_data, mean)
计算平均值。这个returns:
species longitude latitude
1 Abies amabilis -111.1130 41.19911
2 Abies arizonica -110.8678 37.03490
3 Abies bifolia -112.5143 41.88542
或者,dplyr
可用于
library(dplyr)
your_data %>%
group_by(species) %>%
summarize(across(.fns = mean))
同样returns
# A tibble: 3 x 3
species longitude latitude
<chr> <dbl> <dbl>
1 Abies amabilis -111. 41.2
2 Abies arizonica -111. 37.0
3 Abies bifolia -113. 41.9
使用data.table
library(data.table)
setDT(df1)[, lapply(.SD, mean), species]