如何在 R 中的 tibble 中添加行向量?

How can i add a row vector in a tibble in R?

我在 R 中有一个 tibble,从 6 月开始,每个 month.Apart 有 11 个观测值为 0。 我的数据框 (tibble) 如下所示:

library(tidyverse)
A = c(1,2,3,4,5,7,8,9,10,11,12)
B = rnorm(11,0,1)
Data = tibble(A,B);Data

但是我想添加这个时间序列的 6 月的 0 次观察。 像 :

d = c(6,0);d
newdata = rbind(Data,d)
order(newdata$A)

但是 12(十二月)appears.Any 有帮助吗?

两种方法:

(1) 为此我们可以使用 add_row。但是,d 必须命名,我们需要用 tribble bang !!! 运算符将其拼接成 add_row。然后我们可以 arrange 数据,以便月份从 1 到 12 排序。当然你可以直接指定 add_row 就像@Chris 的回答一样,不需要外部向量。

library(dplyr)

A = c(1,2,3,4,5,7,8,9,10,11,12)
B = rnorm(11,0,1)
Data = tibble(A,B)

d = c(A = 6, B = 0)

newdata <- Data %>% 
  add_row(!!! d) %>% 
  arrange(A)

# check
newdata
#> # A tibble: 12 x 2
#>        A        B
#>    <dbl>    <dbl>
#>  1     1  1.22   
#>  2     2  0.0729 
#>  3     3  0.597  
#>  4     4 -1.26   
#>  5     5  0.928  
#>  6     6  0      
#>  7     7 -1.08   
#>  8     8  0.704  
#>  9     9 -0.119  
#> 10    10 -0.462  
#> 11    11 -0.00388
#> 12    12  1.56

order(newdata$A) 
#>  [1]  1  2  3  4  5  6  7  8  9 10 11 12

(2) 我们可以使用 tidyr::complete,正如@Ronak 在评论中所建议的,尽管我们使用 full_seq:

略有不同的规范
library(tidyr)

Data %>% 
  complete(A = full_seq(A, 1), fill = list(B = 0))

#> # A tibble: 12 x 2
#>        A      B
#>    <dbl>  <dbl>
#>  1     1 -0.258
#>  2     2 -1.18 
#>  3     3 -0.165
#>  4     4  0.775
#>  5     5  0.926
#>  6     6  0    
#>  7     7  0.343
#>  8     8  1.10 
#>  9     9  0.359
#> 10    10  0.934
#> 11    11 -0.444
#> 12    12  0.184

reprex package (v2.0.1)

于 2021-09-21 创建

您可以在 add_row 中定义附加行:

library(dplyr)
Data %>%
  add_row(A = 6, B = 0) %>% 
  arrange(A)
# A tibble: 12 x 2
       A       B
   <dbl>   <dbl>
 1     1 -0.547 
 2     2 -0.564 
 3     3 -0.890 
 4     4 -0.477 
 5     5 -0.998 
 6     6  0     
 7     7 -0.776 
 8     8  0.0645
 9     9  0.959 
10    10 -0.110 
11    11 -0.511 
12    12 -0.911