将加权调查保存为数据框架

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

我想分析一下过去使用SPSS软件进行分析的调查。调查有一个权重变量。

在SPSS中,它很容易通过变量加权(使用'weight by'函数)但是我在使用R这样做时遇到了问题。

我使用Survey包来包含权重变量。我将在这里展示一个更简单的例子:

    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等)。

可以吗?

r dataframe weight
1个回答
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")

下次您不必对数据集应用权重,而是直接深入分析。

© www.soinside.com 2019 - 2024. All rights reserved.