【问题标题】:Calculate values from consecutive rows (two different tables)从连续行计算值(两个不同的表)
【发布时间】:2019-07-12 13:17:58
【问题描述】:

我正在处理两个表,table1 和 table2。第一个表(table1)包含一个称为“代码”的列,其中包含与放置在路径上的一组点相对应的唯一标识符(代码)。第二个表(table2)包含这些点之间的距离如下:

code1| code2| distance

252| 252| 1000|

我想将连续点之间的距离(第 2 行中的点与第 1 行中的点、第 3 行中的点与第 2 行中的点等)添加到 table1,如下所示(距离已组成):

codes distance

    251 0
    252 1000
    253 20000

样本数据:

table1<-structure(list(codes = c("251", "253", "259", "261")), row.names = c(NA, 
                                                                         -4L), class = "data.frame")



table2<-structure(list(dist = c(43733.8720639044, 50226.4427668293, 13373.4575031321, 
                                57107.3295670365, 68610.7672078486, 68974.0419745275, 63599.9002699614, 
                                47370.0886728576, 40298.4023452974, 48089.0718267054, 74934.8997999821, 
                                81332.8498247429, 34715.6143235733, 38149.8130708784, 50016.5254783694, 
                                15510.828443256, 11677.4399553228, 39174.1270562218, 26845.8279732768, 
                                33243.7779980375), code1 = c(253L, 253L, 261L, 261L, 261L, 261L, 
                                                             261L, 261L, 261L, 261L, 261L, 261L, 259L, 259L, 259L, 259L, 259L, 
                                                             259L, 259L, 259L), code2 = c(252L, 251L, 253L, 252L, 260L, 258L, 
                                                                                          251L, 256L, 257L, 259L, 254L, 255L, 253L, 252L, 258L, 251L, 256L, 
                                                                                          257L, 254L, 255L)), row.names = c(NA, -20L), class = "data.frame")

【问题讨论】:

    标签: r dataframe dplyr data.table tidyverse


    【解决方案1】:
    library(dplyr)
    
    table1 %>%
      mutate(codes2 = lag(codes)) %>%
      mutate_all(list(as.integer)) %>%
      left_join(., table2, by=c("codes"="code1", "codes2"="code2")) %>% 
      select(-codes2)
    
    #>   codes     dist
    #> 1   251       NA
    #> 2   253 50226.44
    #> 3   259 34715.61
    #> 4   261 48089.07
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-21
      • 2019-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      相关资源
      最近更新 更多