【发布时间】:2016-12-20 13:17:24
【问题描述】:
我一直在尝试通过 SPSS 调用 R。
我已经弄清楚如何将 SPSS 数据提取到 R 数据框中,创建一个变量,然后将带有新变量的数据框传递回 SPSS 数据集。
我不知道该怎么做是传回变量,这些变量是使用 R 创建的第一个变量的附加转换。
具体来说,我先创建变量
index <- c("INDX","label",0,"F8.2","scale")
通过将变量 B 从 0 缩放到 1 并使用以下代码创建数据框 casedata:
casedata <- data.frame(casedata, ave(casedata$B, casedata$Patient_Type,
FUN = function(x) (x- min(x))/(max(x)- min(x))))
我可以成功地将新数据框传回 SPSS,一切都很好。但是在对 R 的同一次调用中,我想创建一个新变量
indexave <- c("INDX_Ave","label",0,"F8.2","scale")
使用以下代码将INDX 索引到自身的平均值:
casedata <- data.frame(casedata, casedata$INDX/mean(casedata$INDX))
我不知道如何将INDX_Ave 传回 SPSS。
我怀疑这与 SPSS 将名称分配给新变量的方式有关。你会注意到
ave(casedata$B, casedata$Patient_Type, FUN = function(x) (x- min(x))/(max(x) - min(x))
前面没有casedata$INDX=。 SPSS显然是从这行代码知道的
index <- c("INDX","label",0,"F8.2","scale")
将名称INDX 传递给创建的第一个变量。我相信变量名与变量本身的脱节会阻止创建附加变量INDX_Ave。
下面是我的整个程序块:
BEGIN PROGRAM R.
dict <- spssdictionary.GetDictionaryFromSPSS()
casedata <- spssdata.GetDataFromSPSS(factorMode="labels")
catdict <- spssdictionary.GetCategoricalDictionaryFromSPSS()
index <- c("INDX","Level Importance Index",0,"F8.2","scale")
indexave <- c("INDX_Ave","Level importance indexed to average importance",0,"F8.2","scale")
dict<-data.frame(dict,index,indexave)
casedata <- data.frame(casedata, ave(casedata$B, casedata$Patient_Type,
FUN = function(x) (x- min(x))/(max(x)- min(x))))
casedata <- data.frame(casedata, casedata$INDX/mean(casedata$INDX)) #dosent work
spssdictionary.SetDictionaryToSPSS("BWOverallBetas2",dict,categoryDictionary=catdict)
spssdata.SetDataToSPSS("BWOverallBetas2",casedata,categoryDictionary=catdict)
spssdictionary.EndDataStep()
END PROGRAM.
【问题讨论】:
标签: r integration spss