我想分析一下过去使用SPSS软件进行分析的调查。该调查有一个权重变量。
在SPSS中,它很容易按变量加权(使用'权重'函数)但是我在使用R进行操作时遇到了问题。
我使用Survay包来包含权重变量。我将在这里展示一个更简单的例子:
Data <- data.frame(
X =c(1,4,6,4,1,7,3,2,2),
Y = c(6,5,9,9,43,65,45,67,90),
weight=c(0.1,1.2,4,0,0,5,0.65,1,0)
)
summary(Data )
X Y weight
Min. :1.000 Min. : 5.00 Min. :0.000
1st Qu.:2.000 1st Qu.: 9.00 1st Qu.:0.000
Median :3.000 Median :43.00 Median :0.650
Mean :3.333 Mean :37.67 Mean :1.328
3rd Qu.:4.000 3rd Qu.:65.00 3rd Qu.:1.200
Max. :7.000 Max. :90.00 Max. :5.000
library(survey)
dat_weight=svydesign(ids = ~1, data = Data , weights = Data $weight)
现在我想将此对象(dat_weight)保存为一个简单的数据框,并将其用于其他分析(例如PCA,CA等)。
可以吗?
答案 0 :(得分:0)
我遇到了同样的问题,直到找到了一个非常简单的解决方案。您可以使用save()
函数将R对象保存到扩展名为.RData
的特定文件中。完成此操作后,可以使用load()
函数读回该对象,而无需将其分配给任何对象,因为在保存时该对象将分配给其原始名称。
请参见以下示例:
Data <- data.frame(
X =c(1,4,6,4,1,7,3,2,2),
Y = c(6,5,9,9,43,65,45,67,90),
weight=c(0.1,1.2,4,0,0,5,0.65,1,0)
)
dat_weight <- survey::svydesign(ids = ~1, data = Data, weights = Data$weight)
save(dat_weight, file = "~/weighted_data.RData")
# clean environment
rm(list = ls())
load("~/weighted_data.RData")
下次您不必在数据集上应用权重,而直接进入分析。