我尝试创建一个变量“Q7_1_r”,其值基于现有变量“Q7_1”的值,然后将该技术应用于多个变量(类似于宏)
在下面的示例中,我的数据框被称为newfile。如果我硬编码
sevenvar <- function(var){
newfile <- mutate(newfile, Q7_1_r = case_when(var == 1 ~ 0,
var == 2 ~ 25,
var == 3 ~ 50,
var == 4 ~ 75,
var == 5 ~ 100))
}
sevens <- sevenvar(newfile$Q7_1)
这意味着当Q7_1为1时,Q7_1_r为0,当Q7_1 = 2时,Q7_1_r为25,等等。
`head(sevens)`
对结果很满意
问题是,我有超过100个变量来运行这个代码块,而不是写100次,我想创建一个动态的,它根据“var”的值创建“var_r”,然后在此之外做一行,说“var”是“Q7_1”,“Q23_4”,“Q35_2”等。(有点像调用宏)
我尝试了以下方法
sevenvar <- function(var){
newfile <- mutate(newfile, paste(var,"_r", sep = "") = case_when(var == 1 ~ 0,
var == 2 ~ 25,
var == 3 ~ 50,
var == 4 ~ 75,
var == 5 ~ 100))
}
sevens <- sevenvar(newfile$Q7_1)
head(sevens)
但失败了这个问题似乎与创建“var_r”变量的代码有关。任何人都可以请建议如何做到这一点,而不是我硬编码上述100倍?谢谢
1条答案
按热度按时间9udxz4iz1#
您可以在所需的列上使用
match
和lapply
编写一个小函数。考虑这个玩具数据框。