gpt4 book ai didi

r - 在管道中使用bind_rows

转载 作者:行者123 更新时间:2023-12-02 18:51:20 24 4
gpt4 key购买 nike

今天遇到一个问题,我想知道如何使用bind_rows在管道中运行,同时避免重复和 NA值(value)观。考虑我有以下简单的小标题:

df <- tibble(
col1 = c(3, 4, 5),
col2 = c(5, 3, 1),
col3 = c(6, 4, 9),
col4 = c(9, 6, 5)
)

我要绑定(bind)col1 & col2按行 col3 & col4这样我就有了一个包含 2 列和 6 个观察值的 tibble。最后将列名更改为 colnew1colnew2 。但是当我使用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值和重复,其次我是否可以使用 select函数位于 bind_rows我记得哈德利·威克姆曾经使用过filter函数由 bind_rows 包裹.

我希望对此问题有任何解释,并提前感谢您。

最佳答案

选择前两列和 bind_rows col3 col4col1col2 然后使用transmute

df1 <- df %>%
select(col1, col2) %>%
bind_rows(
df %>%
transmute(col1 = col3, col2 = col4)
)

结果:

# A tibble: 6 x 2
col1 col2
<dbl> <dbl>
1 3 5
2 4 3
3 5 1
4 6 9
5 4 6
6 9 5

关于r - 在管道中使用bind_rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66723429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com