代码之家  ›  专栏  ›  技术社区  ›  Seyma Kalay

将矢量值增加到行数

  •  1
  • Seyma Kalay  · 技术社区  · 3 年前

    我有两个想要合并的数据集。但在此之前,我想将ID增加为 tail(df1$ID, n=1) + 1 只要的最后一行 df2

     df1 <- data_frame(ID = c(1:4), valueA = seq(0.1,0.4,0.1), Category= "Apples" )
    df2 <- data_frame(ID = "I NEED TO DEFINE", valueA = seq(0.1,0.4,0.1),  Category= "Apples2")
    
    
    tail(df1$ID, n=1)
    

    预期答案

     ID ValueA Category
         1    0.1 Apples  
         2    0.2 Apples  
         3    0.3 Apples  
         4    0.4 Apples  
         5    0.1 Apples2 
         6    0.2 Apples2 
         7    0.3 Apples2 
         8    0.4 Apples2 
    

    如何避开这一点?非常感谢。

    3 回复  |  直到 3 年前
        1
  •  2
  •   TarJae    3 年前

    我们可以使用 bind_rows :

    library(dplyr)
    
    bind_rows(df1, df2 %>% 
                mutate(ID = nrow(df1)+row_number()))
    
         ID valueA Category
      <int>  <dbl> <chr>   
    1     1    0.1 Apples  
    2     2    0.2 Apples  
    3     3    0.3 Apples  
    4     4    0.4 Apples  
    5     5    0.1 Apples2 
    6     6    0.2 Apples2 
    7     7    0.3 Apples2 
    8     8    0.4 Apples2 
    
        2
  •  1
  •   C. Murtaugh    3 年前

    你已经走了90%的路!定义 end 作为的最后一行的ID值 df1 ,并用递增 : :

    end <- tail(df1$ID, n=1)
    df2$ID <- (end+1):(end+nrow(df2))
    bind_rows(df1, df2)
    

    这正是你的预期产出。

        3
  •  1
  •   jpsmith    3 年前

    一种方法可能是按顺序排列ID df2 然后使用 rbind :

    df2$ID <- (nrow(df1) + 1):(nrow(df1) + nrow(df2))
    
    rbind(df1, df2)
    

    输出:

         ID valueA Category
      <int>  <dbl> <chr>   
    1     1    0.1 Apples  
    2     2    0.2 Apples  
    3     3    0.3 Apples  
    4     4    0.4 Apples  
    5     5    0.1 Apples2 
    6     6    0.2 Apples2 
    7     7    0.3 Apples2 
    8     8    0.4 Apples2 
    
    推荐文章