重新编码一系列名称为 NAMEx 的变量,其中 x 是数字系列

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

我有一系列 NAMEx 形式的变量,我想对其应用相同的重新编码方案。 (在 stata 中,我会使用“重新编码名称*(重新编码规范)”来做到这一点

我倾向于使用带有列名列表的 for 循环,但这似乎不是 R 中可接受的方法(并且会产生错误)。我还尝试使用包 car 中的重新编码语句,但这产生了不同的错误。

在 R 中执行此操作的方法涉及使用 lapply() 函数,我尝试了以下方法:

v1 <- c(1,5,7,9)
v2 <- c(2,7,9,6)
v3 <- c(8,3,4,7)

df <- data.frame(v1,v2,v3)
df
namelist=c("df$v1","df$v2","df$v3")
namelist
myrecode <- function(x) {
        case_when(x==7 ~ 77,
                  x==9 ~ 99,
                 .default = )}
lapply(namelist,myrecode,data=df)

FUN(X[[i]], ...) 中的错误: 未使用的参数 (data = list(c(1, 5, 7, 9), c(2, 7, 9, 6), c(8, 3, 4, 7)))

请注意,我在某些地方需要根据第二个变量 (y) 的值来替换一个变量 (x) 的值,并且我希望能够使用如下所示的函数来做到这一点:

myrecode <- function(x,y) {x[y==27] = 2
这里有什么特别需要我知道的吗?

r loops lapply recode
1个回答
0
投票
library(dplyr)

df |>
  mutate(across(v1:v3, \(x) case_match(x, 7 ~ 77, 9 ~ 99, .default = x)))
© www.soinside.com 2019 - 2024. All rights reserved.