【发布时间】:2021-03-20 15:40:23
【问题描述】:
根据我今天遇到的一个问题,我想知道如何在管道中使用bind_rows 函数,同时避免重复和NA 值。考虑一下我有以下简单的小标题:
df <- tibble(
col1 = c(3, 4, 5),
col2 = c(5, 3, 1),
col3 = c(6, 4, 9),
col4 = c(9, 6, 5)
)
我想将col1 和col2 与col3 和col4 按行绑定,这样我就有一个包含2 列和6 个观察值的小标题。最后将列的名称更改为colnew1 和colnew2。
但是当我使用bind_rows 时,我得到了以下输出,其中包含很多重复和NA 值。
df %>%
bind_rows(
select(., 1:2),
select(., 3:4)
)
# A tibble: 9 x 4
col1 col2 col3 col4
<dbl> <dbl> <dbl> <dbl>
1 3 5 6 9
2 4 3 4 6
3 5 1 9 5
4 3 5 NA NA
5 4 3 NA NA
6 5 1 NA NA
7 NA NA 6 9
8 NA NA 4 6
9 NA NA 9 5
# My desired output would be something like this:
f1 <- function(x) {
df <- x %>%
set_names(nm = rep(c("newcol1", "newcol2"), 2))
bind_rows(df[, c(1, 2)], df[, c(3, 4)])
}
f1(df)
# A tibble: 6 x 2
newcol1 newcol2
<dbl> <dbl>
1 3 5
2 4 3
3 5 1
4 6 9
5 4 6
6 9 5
我可以在没有管道的情况下获得所需的输出,但首先我想知道如何在管道中使用 bind_rows 而不会获得 NA 值和重复,其次我是否可以在 @987654336 中使用 select 函数@ 我记得有一次 Hadley Wickham 使用了由 bind_rows 包装的 filter 函数。
感谢您对此问题的任何解释,并提前感谢您。
【问题讨论】:
-
你能提供你想要的输出吗?
-
我刚刚在我的代码末尾添加了我想要的输出。