如何在R中将mutate_at()与两组变量一起使用 [英] How to use mutate_at() with two sets of variables, in R
本文介绍了如何在R中将mutate_at()与两组变量一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用dplyr,我想将一列除以另一列,其中两列具有相似的模式.我有以下数据框:
Using dplyr, I want to divide a column by another one, where the two columns have a similar pattern. I have the following data frame:
My_data = data.frame(
var_a = 101:110,
var_b = 201:210,
number_a = 1:10,
number_b = 21:30)
我想创建一个新变量:var_a_new = var_a/number_a,var_b_new = var_b/number_b,依此类推,如果我有c,d等.
I would like to create a new variable: var_a_new = var_a/number_a, var_b_new = var_b/number_b and so on if I have c, d etc.
My_data %>%
mutate_at(
.vars = c('var_a', 'var_b'),
.funs = list( new = function(x) x/(.[,paste0('number_a', names(x))]) ))
我没有得到一个错误,但是结果是错误的.我认为问题在于我不了解"x"是什么.它是.vars中的字符串之一吗?它是My_data中的一列吗?还有吗?
I did not get an error, but a wrong result. I think that the problem is that I don't understand what the 'x' is. Is it one of the string in .vars? Is it a column in My_data? Something else?
推荐答案
一个选项可能是:
bind_cols(My_data,
My_data %>%
transmute(across(starts_with("var"))/across(starts_with("number"))) %>%
rename_all(~ paste0(., "_new")))
var_a var_b number_a number_b var_a_new var_b_new
1 101 201 1 21 101.00000 9.571429
2 102 202 2 22 51.00000 9.181818
3 103 203 3 23 34.33333 8.826087
4 104 204 4 24 26.00000 8.500000
5 105 205 5 25 21.00000 8.200000
6 106 206 6 26 17.66667 7.923077
7 107 207 7 27 15.28571 7.666667
8 108 208 8 28 13.50000 7.428571
9 109 209 9 29 12.11111 7.206897
10 110 210 10 30 11.00000 7.000000
这篇关于如何在R中将mutate_at()与两组变量一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文