在 R 中的条件后添加填充行
Add filled rows after a condition in R
我基本上希望每个唯一 ID 都有三行。
每个唯一 ID 必须包含 kind=1、kind=2、kind=3 的行。
有些人已经拥有全部三个,但有些人只有一行观察结果,例如只有第一种和第二种。
我还想为新添加的行用“0”(不是 NA)填充值 A 和 B。
我是 R 的新手,所以我真的不知道如何开始。
id = c("u_1", "u_1", "b_1", "u_2", "u_2", "u_2")
kind = c("1", "2", "1", "1", "2", "3")
A = c(3, 4, 11, 3, 4, 6)
B = c(4, 1, 6, 2, 3, 8)
df <- data.frame(id, kind, A, B)
一切皆有可能。一个人 (id) 可以有种类 1 和 2,但不能有种类 3;他们只能有1个,只有2个,只有3个;他们只能有 2 和 3 但不能有 1,等等...
所以我希望这段代码最终看起来像下面这样:
id
种类
一个
乙
u_1
1
3
4
u_1
2
4
1
u_1
3
0
0
b_1
1
11
6
b_1
2
0
0
b_1
3
0
0
u_2
1
3
2
u_2
2
4
3
u_2
3
6
8
非常感谢您花时间考虑我的问题!
试试 tidyr::complete
:
library(tidyr)
id = c("u_1", "u_1", "b_1", "u_2", "u_2", "u_2")
kind = c("1", "2", "1", "1", "2", "3")
A = c(3, 4, 11, 3, 4, 6)
B = c(4, 1, 6, 2, 3, 8)
df <- data.frame(id, kind, A, B)
complete(df, id, kind, fill = list(A = 0, B =0))
#> # A tibble: 9 x 4
#> id kind A B
#> <chr> <chr> <dbl> <dbl>
#> 1 b_1 1 11 6
#> 2 b_1 2 0 0
#> 3 b_1 3 0 0
#> 4 u_1 1 3 4
#> 5 u_1 2 4 1
#> 6 u_1 3 0 0
#> 7 u_2 1 3 2
#> 8 u_2 2 4 3
#> 9 u_2 3 6 8
由 reprex package (v2.0.0)
于 2021-06-04 创建
我基本上希望每个唯一 ID 都有三行。 每个唯一 ID 必须包含 kind=1、kind=2、kind=3 的行。
有些人已经拥有全部三个,但有些人只有一行观察结果,例如只有第一种和第二种。 我还想为新添加的行用“0”(不是 NA)填充值 A 和 B。
我是 R 的新手,所以我真的不知道如何开始。
id = c("u_1", "u_1", "b_1", "u_2", "u_2", "u_2")
kind = c("1", "2", "1", "1", "2", "3")
A = c(3, 4, 11, 3, 4, 6)
B = c(4, 1, 6, 2, 3, 8)
df <- data.frame(id, kind, A, B)
一切皆有可能。一个人 (id) 可以有种类 1 和 2,但不能有种类 3;他们只能有1个,只有2个,只有3个;他们只能有 2 和 3 但不能有 1,等等...
所以我希望这段代码最终看起来像下面这样:
id | 种类 | 一个 | 乙 |
---|---|---|---|
u_1 | 1 | 3 | 4 |
u_1 | 2 | 4 | 1 |
u_1 | 3 | 0 | 0 |
b_1 | 1 | 11 | 6 |
b_1 | 2 | 0 | 0 |
b_1 | 3 | 0 | 0 |
u_2 | 1 | 3 | 2 |
u_2 | 2 | 4 | 3 |
u_2 | 3 | 6 | 8 |
非常感谢您花时间考虑我的问题!
试试 tidyr::complete
:
library(tidyr)
id = c("u_1", "u_1", "b_1", "u_2", "u_2", "u_2")
kind = c("1", "2", "1", "1", "2", "3")
A = c(3, 4, 11, 3, 4, 6)
B = c(4, 1, 6, 2, 3, 8)
df <- data.frame(id, kind, A, B)
complete(df, id, kind, fill = list(A = 0, B =0))
#> # A tibble: 9 x 4
#> id kind A B
#> <chr> <chr> <dbl> <dbl>
#> 1 b_1 1 11 6
#> 2 b_1 2 0 0
#> 3 b_1 3 0 0
#> 4 u_1 1 3 4
#> 5 u_1 2 4 1
#> 6 u_1 3 0 0
#> 7 u_2 1 3 2
#> 8 u_2 2 4 3
#> 9 u_2 3 6 8
由 reprex package (v2.0.0)
于 2021-06-04 创建