我正在将大量的 stata 代码转换为 R。
在 stata 中,如果我有一系列变量,例如 var1、var2、var3 等,并且我想更改(重新编码)出现在任何变量中的特定值,我可以使用以下语句来实现 重新编码 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
最小。第一曲。 第三曲区中位数平均值。 最大限度。 不适用的 43.00 52.75 56.00 58.25 61.50 78.00 2
VARList 的内容是 [1]“数据$var1”“数据$var2”“数据$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
}
它也不起作用。
显然我在这里遗漏了一些东西。
尝试:
data[data==9999] <- NA