【问题标题】:Saving weighted survey as data frame将加权调查另存为数据框
【发布时间】:2023-03-19 06:17:01
【问题描述】:

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

在 SPSS 中很容易按变量加权(使用“weight by”函数)但我在尝试使用 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 等)。

可以吗?

【问题讨论】:

  • dat1dat_weight 喜欢什么?也许你应该使用str函数来看看。
  • 你能让这个例子重现吗?你更有可能通过这种方式获得帮助。见:stackoverflow.com/questions/5963269/…
  • 现在好点了吗?
  • 你试过weighted.mean基本函数吗?另外,我不确定您实际上要做什么。你能不能temp &lt;- summary(dat_weight)
  • 我想对此数据框执行 PCA 分析,但我不知道如何通过变量“权重”对观察结果进行加权并将其保存为数据框。 svydesign 函数创建了一个“survey.design”类,不能转换为数据框

标签: r dataframe


【解决方案1】:

在找到一个非常简单的解决方案之前,我遇到了同样的问题。您可以使用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")

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多