我有一个将数据连接在一起的函数,然后应该取一列的平均值。
在这里,我可以连接数据,但我不确定如何以足够通用的方式对x.x和x.y列进行平均
library(dplyr)
a <- tibble(id = 1:3, x = 4:6)
b <- tibble(id = 1:3, x = 16:18)
join_then_average <- function(df1, df2, var) {
full_join(df1, df2, by = "id") # i want to average x.x, and x.y
}
join_then_average(a, b)
#> # A tibble: 3 x 3
#> id x.x x.y
#> <int> <int> <int>
#> 1 1 4 16
#> 2 2 5 17
#> 3 3 6 18从概念上讲,我想写一些类似这样的东西:
mutate({{var}} := rowMeans(c({{var}}.x, {{var}}.y), na.rm = T)但这不管用。我不确定解决这个问题的最好方法。
发布于 2020-11-04 10:34:19
您可以选择其中包含var的列并采用rowMeans。
library(dplyr)
join_then_average <- function(df1, df2, var) {
full_join(df1, df2, by = "id") %>%
mutate(x = rowMeans(select(., contains(var))))
}
join_then_average(a, b, 'x')
# A tibble: 3 x 4
# id x.x x.y x
# <int> <int> <int> <dbl>
#1 1 4 16 10
#2 2 5 17 11
#3 3 6 18 12https://stackoverflow.com/questions/64673496
复制相似问题