如何使用 mutate() 创建一个值等于给定变量名称的变量?

问题描述 投票:0回答:1

我想使用 mutate() 创建一个变量,其值等于给定变量的名称。我需要这个动态改变。抱歉,我对 R 还很陌生,所以如果这没有意义,请告诉我。

这是我写的函数:

proportions <- function(data, var_1) {
  var_1 <- enquo(var_1)
  
  prop_all <- data %>%
    filter(!!var_1 >= 0) %>%
    group_by(!!var_1) %>%
    summarise(Percent = round(survey_mean(vartype = "ci") * 100, 0),
              Total = unweighted(n())) %>%
    mutate(N = sum(Total)) %>%
    mutate(Indicator = label(!!var_1))
  
}

这里“Indicator”变量的值是 var_1 的标签。我希望它的值是 var_1 的名称。

r function variables mutate
1个回答
0
投票

我们可以使用

rlang::as_label()
:

library(dplyr)

foo <- function(data, var_1) {
  
  var_1 <- enquo(var_1)
  
  data |> 
    mutate(Indicator = rlang::as_label(var_1))
}

foo(mtcars, hp) |> 
  head()

#>                    mpg cyl disp  hp drat    wt  qsec vs am gear carb Indicator
#> Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4        hp
#> Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4        hp
#> Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1        hp
#> Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1        hp
#> Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2        hp
#> Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1        hp

创建于 2024-05-02,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.