我正在将大量 stata 代码转换为 R。在 stata 中,如果我有一系列变量,例如 var1、var2、var3 等,并且我想更改(重新编码)特定值(如果它出现在任何变量中)......
我正在将大量 stata 代码转换为 R。
在 stata 中,如果我有一系列变量,例如 var1、var2、var3 等,并且我想更改(重新编码)某个特定值(如果它出现在任何变量中),我可以使用语句 recode var*(9999 = -9) 来执行此操作。在这种情况下,我想将变量系列中的所有 9999 更改为 NA。
这是我试过的代码
data = data.frame(var1=c(5, 56, 9999, 56, 78, 51),
var2=c( 9999, 56, 43, 56, 78, 9999),
var3=c(5, 34, 56, 78, 76, 79))
varlist=gsub(" ","",paste("data$var",1:3,sep=""))
varlist
summary(data$var2)
for (v in varlist){
v[v=="9999"] = NA
}
summary(data$var2)
data$var2[data$var2==9999] = NA
summary(data$var2)
循环不起作用,单一赋值 (data$var2[data$var2==9999] = NA) 确实起作用,如三个摘要 (data$var2) 所示:
最小值 第一区 中位数 平均值 第三区 最大值 43 56 67 3372 7519 9999
最小值 第一区 中位数 平均值 第三区 最大值 43 56 67 3372 7519 9999
最小值 第 1 区 中位数 平均值 第 3 区 最大值 NA 43.00 52.75 56.00 58.25 61.50 78.00 2
VARLIST 的内容是[1] \'data$var1\' \'data$var2\' \'data$var3\'
我还根据我在 STACKOVERFLOW 上找到的内容尝试了以下循环( https://forum.posit.co/t/using-variables-names-in-loops/128653/2 ):
for (i in 1:3) {
variable = paste0("data$var", i)
variable[variable==9999] = NA
}
它也没有起作用。
显然我在这里遗漏了一些东西。
使用循环有条件地替换一系列变量的值
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!