增加向量值,只要行号

问题描述 投票:0回答:3

我有 2 个要合并的数据集。但在此之前,我想将 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 

如何解决这个问题?非常感谢。

r dplyr tidyr data-manipulation tidy
3个回答
1
投票

一种方法可能是在

df2
中对ID进行排序然后使用
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 

0
投票

你已经完成了 90%!定义

end
作为
df1
最后一行的 ID 值,并用
:
递增:

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

这给了我你预期的输出。


0
投票

我们可以使用

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 
© www.soinside.com 2019 - 2024. All rights reserved.