我试图不纠缠于循环和复杂的代码中,这些代码比简单地重复代码行需要更长的时间才能正确完成。
我想对 R 中的多个变量进行以下重新编码。我连接了变量,但它们并没有改变原始数据文件的内容。
recode(d$var1,"1=50; 2=70; 3=100; 4=140; 5=190")
重复... d$var2
_d$var20
如果更好地利用编码时间复制代码 20 次,请告诉我!
非常感谢。
我试图不纠缠于循环和复杂的代码中,这些代码比简单地重复代码行需要更长的时间才能正确完成。
我想对 R 中的多个变量进行以下重新编码。我连接了变量,但它们并没有改变原始数据文件的内容。
recode(d$var1,"1=50; 2=70; 3=100; 4=140; 5=190")
重复... d$var2
_d$var20
如果更好地利用编码时间复制代码 20 次,请告诉我!
非常感谢。
如果您的所有变量都在同一个数据框中,您可以编辑var1:var3
以var1:var999
重新编码所有变量。
与dplyr
:
A <- d %>%
mutate_at(vars(var1:var3), .funs = list(
~case_when(
. == 1 ~ 50,
. == 2 ~ 70,
. == 3 ~ 100,
. == 4 ~ 140,
. == 5 ~ 190
)
))
如果您有var1:var3
多个数据框或列表,则可以创建一个函数,例如:
recode_func <- function(x) {
df <- df %>%
mutate_at(vars(x), .funs = list(
~case_when(
. == 1 ~ 50,
. == 2 ~ 70,
. == 3 ~ 100,
. == 4 ~ 140,
. == 5 ~ 190
)
))
}
然后将该函数调用到数据框或列表。
给我们:
var1 var2 var3
1 50 50 50
2 70 70 70
3 100 100 100
4 140 140 140
5 190 190 190
让
d = data.frame(var1 = c(1, 2, 3, 4, 5),
var2 = c(1, 2, 3, 4, 5),
var3 = c(1, 2, 3, 4, 5))
然后通过一个简单的apply
我们得到
A = apply(d,
2,
function(x) dplyr::recode(x, "1" = "50", "2" = "70",
"3" = "100" , "4" = "140",
"5" = "190")) %>%
as.data.frame(stringsAsFactors = FALSE)
输出
> A
var1 var2 var3
1 50 50 50
2 70 70 70
3 100 100 100
4 140 140 140
5 190 190 190