将数据帧中的值与group_by中的其他值匹配

时间:2018-02-13 16:35:33

标签: r

我正在使用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

现在每个位置的总计正确,并且每个位置可以映射一个点。

1 个答案:

答案 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() ...