向量值的递增至行号

Increment the vector value as long as the row number

提问人:Seyma Kalay 提问时间:5/5/2023 更新时间:5/5/2023 访问量:35

问:

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

 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 数据操作 整洁

评论


答:

1赞 jpsmith 5/5/2023 #1

一种方法可能是对 ID 进行排序,然后使用:df2rbind

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 
1赞 C. Murtaugh 5/5/2023 #2

你已经完成了 90% 的路程!定义为最后一行的 ID 值,并用 递增:enddf1:

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

这给了我你预期的输出。

2赞 TarJae 5/5/2023 #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