R语言 递增向量值,只要行号

snz8szmq  于 2023-05-11  发布在  其他
关注(0)|答案(3)|浏览(188)

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

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

siv3szwd

siv3szwd1#

我们可以使用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
6psbrbz9

6psbrbz92#

你已经成功了90%!将end定义为df1最后一行的ID值,并将其递增为:

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

这正好给了我你期望的输出。

u91tlkcl

u91tlkcl3#

一种方法可以是对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

相关问题