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

R 将加权调查保存为数据框架,r,dataframe,R,Dataframe,我想分析一个过去用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)

我想分析一个过去用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 )
现在,我想将这个对象(dat_weight)保存为一个简单的数据帧,并将其用于其他分析(如PCA、CA等)


能做到吗?

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

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

数据什么是
dat1
dat\u-weight
类似?也许你应该使用
str
函数来看看。你能让这个例子重现吗?这样你更有可能得到帮助。请看:现在好点了吗?您是否尝试过
加权.mean
基函数?另外,我也不确定你到底想做什么。我想对这个数据帧执行PCA分析,但我不知道如何通过变量“权重”对观察值进行加权,然后将其保存为数据帧。函数svydesign创建了一个“survey.design”类,不能转换为数据框架什么是
dat1
dat\u weight
类似?也许你应该使用
str
函数来看看。你能让这个例子重现吗?这样你更有可能得到帮助。请看:现在好点了吗?您是否尝试过
加权.mean
基函数?另外,我也不确定你到底想做什么。我想对这个数据帧执行PCA分析,但我不知道如何通过变量“权重”对观察值进行加权,然后将其保存为数据帧。函数svydesign创建“survey.design”类,不能转换为数据帧
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")