我有許多變數要在 R 中合并在一起。我已將它們提取到一個向量中,以便在合并函式中使用它們。在函式中輸入它們中的每一個有點乏味。有沒有辦法解決它?
library(dplyr)
set.seed(123)
df <- data.frame(
var1 = sample(c(NA, 1, 3), 10, replace = T),
var2 = sample(c(NA, 1, 3), 10, replace = T),
var3 = sample(c(NA, 1, 3), 10, replace = T),
var4 = sample(c(NA, 1, 3), 10, replace = T),
age = floor(rnorm(10, 15, 2)),
gender = factor(round(runif(10, 1, 2)),
labels = c("Male", "Female"))
)
# Desired variables
myvars <- df %>% select(contains("var")) %>% names()
df_new <- df %>%
mutate(finalvar = coalesce(myvars))
uj5u.com熱心網友回復:
評估!!!和解包rlang::syms:
df %>%
mutate(finalvar = coalesce(!!! rlang::syms(myvars)))
或直接附上rlang:
library(rlang)
df %>%
mutate(finalvar = coalesce(!!! syms(myvars)))
兩個輸出:
var1 var2 var3 var4 age gender finalvar
1 3 1 NA NA 14 Female 3
2 3 1 NA 3 17 Female 3
3 3 NA 3 3 14 Male 3
4 1 1 1 NA 12 Female 1
5 3 3 3 3 13 Female 3
6 1 NA 1 1 16 Female 1
7 1 3 NA NA 14 Male 1
8 1 3 1 3 12 Male 1
9 3 NA 3 NA 13 Male 3
10 NA NA 1 NA 14 Male 1
uj5u.com熱心網友回復:
使用 invoke
library(dplyr)
library(purrr)
df %>%
mutate(finalvar = invoke(coalesce, across(all_of(myvars))))
var1 var2 var3 var4 age gender finalvar
1 3 1 NA NA 14 Female 3
2 3 1 NA 3 17 Female 3
3 3 NA 3 3 14 Male 3
4 1 1 1 NA 12 Female 1
5 3 3 3 3 13 Female 3
6 1 NA 1 1 16 Female 1
7 1 3 NA NA 14 Male 1
8 1 3 1 3 12 Male 1
9 3 NA 3 NA 13 Male 3
10 NA NA 1 NA 14 Male 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325704.html
上一篇:當id有重復項時,如何使用id變數作為最終值進行整形
下一篇:如何在向量中累積條紋
