如何在 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
我在 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