我正在使用R中的数据集,我有一个“名称,纬度,经度和数量”的数据框。如果我group_by name我得到3行如果我group_by经度我得6行因为经度不匹配。这是不正确的,他们应该是两个中的一个。
name <- c("loc_1", "loc_1", "loc_2", "loc_2", "loc_3", "loc_3")
latitude <- c(44.359, 44.359, 44.479, 44.479, 43.522, 43.522)
longitude <- c(-89.839, -89.837, -88.137, -88.130, -89.774, -89.771)
total <- c(9, 6506, 6506, 5, 12966, 351)
t1 <- data.frame(name, latitude, longitude, total)
name latitude longitude total
1 loc_1 44.359 -89.839 9
2 loc_1 44.359 -89.837 6506
3 loc_2 44.479 -88.137 6002
4 loc_2 44.479 -88.130 5
5 loc_3 43.522 -89.774 12966
6 loc_3 43.522 -89.771 351
我需要改变其中一个经度来匹配另一个经度,所以我并不担心。我没有太多要补充这一点,除了一次更改所有这些,这将永远需要一个大型数据集。
name latitude longitude total
1 loc_1 44.359 -89.837 6515
2 loc_2 44.479 -88.137 6007
3 loc_3 43.522 -89.774 13,317
现在每个位置的总计正确,并且每个位置可以映射一个点。
答案 0 :(得分:0)
鉴于你对我的评论的回答,你可以试试这个:
library(dplyr)
t1 %>% group_by(name) %>%
summarise(latitude = as.numeric(names(sort(table(latitude), decreasing = TRUE)))[1],
longitude = as.numeric(names(sort(table(longitude), decreasing = TRUE)))[1],
total = sum(total))
它选择最常出现的纬度和经度并总计总和。如果您还没有计算其中的一部分,可能需要将sum(total)
更改为n()
...