【问题标题】:Doing the same analysis for many variables and plotting them对许多变量进行相同的分析并绘制它们
【发布时间】:2015-06-11 16:07:26
【问题描述】:

我的数据集包含大约 180 个变量,当我使用 SPSS 进行数据输入时(所以我可以在 SPSS 中运行分析,如果我第一次尝试使用 R 时间太长/不起作用)我不得不重新编码很多 - 99 和“kA”到“NA”。

所以我最终复制/粘贴了很多 recode() 函数,并为其添加了相应的变量。必须有更聪明的方法来处理这样的问题 - 对吧?

我想创建一个线图,显示我的被调查者的意见,包括他们回答的平均值。 每个被调查者都被问及他/她对几个项目的意见,并以 1-10 的等级对它们进行评分。所以我想看看每个项目的平均分数,看看人们是否更倾向于同意/不同意它。 (我希望这些添加的信息有助于更好地理解这个问题)。再次 - 这部分大约有 20 个问题/项目,应该有比为每个变量编写代码更聪明的方法.

我还想知道如何以有用的形状获得结果,以便我可以使用结果手段 - 最好使用 ggplot2 将它们绘制为线图。绘图本身不应该是一个太大的问题(尽管我很欣赏任何提示和技巧!) - 这里的主要问题是,如何将结果数据(手段)变成一个形状,继续处理它们(创建图表,子集)是可能的/容易的。到目前为止,我的工作组中的方法是(使用 SPSS)复制结果,粘贴到 Excel 中并在那里摆弄。

【问题讨论】:

  • 如果您尝试绘制多条线,则有一个 matplot 函数。您可以搜索网络或 SO 以找到许多工作示例。如果您发布有关如何组织此数据的充分描述,您可能会得到更具体的答案。使用编辑工具而不是使用 cmets 响应。您可能已经用两条短线完成了所有重新编码:dfrm[dfrm=="-99"] <- NA; dfrm[dfrm=="kA"] <- NA
  • 非常感谢您对 dfrm 函数的评论和建议(到目前为止我从未听说过......)
  • dfrm 不是函数。唯一的函数是==[<-。由于您没有提供示例,因此我只是编了一个名字。我使用“dfrm”来表示数据框,而不是更典型但有缺陷的(IMO)使用“df”。由于df 是 F 分布的密度函数,我发现这么多人使用“df”作为他们最喜欢的通用对象名称很烦人。几年后我可能会克服我的烦恼。

标签: r plot statistics analysis


【解决方案1】:

如果您在 SPSS 中输入数据,则可以在其中定义缺失值。然后,您可以使用诸如 havensjmisc 之类的包来读取 SPSS 文件,其中缺失值会自动转换为 NA

如果您想在之后进行一些重新编码,您还可以查看sjmisc 包中的rec,它允许一次重新编码完整的数据帧(因此无需复制重新编码命令并替换为新的每次的变量名)。请参见以下示例:

library(sjmisc)
data(efc)
head(efc[, 6:9])
  c82cop1 c83cop2 c84cop3 c85cop4
1       3       2       2       2
2       3       3       3       3
3       2       2       1       4
4       4       1       3       1
5       3       2       1       2
6       2       2       3       3
head(rec(efc[, 6:9], "1=10;2=20;3=30;4=40"))
  c82cop1 c83cop2 c84cop3 c85cop4
1      30      20      20      20
2      30      30      30      30
3      20      20      10      40
4      40      10      30      10
5      30      20      10      20
6      20      20      30      30

根据回答的平均值:如果我理解正确,您希望获得所有观察值的每个问题/变量的平均值?如果是,您可以简单地使用colMeans 函数。来自 sjmisc-package 的 efc-data 集的示例,其中使用了变量 6 到 14(所有项目都有 4-item-response-scale):

library(sjmisc)
data(efc)
mydf <- efc[, 6:14]
colMeans(mydf, na.rm = T)

>  c82cop1  c83cop2  c84cop3  c85cop4  c86cop5  c87cop6  c88cop7  c89cop8  c90cop9 
> 3.118757 2.024390 1.634146 1.768374 1.394678 1.288889 1.923333 2.164262 2.932432 

如果您想绘制这些平均值,只需创建一个数据框并像这样使用 ggplot:

plot.df <- data.frame(x = as.factor(c(1:ncol(mydf))),
                      y = colMeans(mydf, na.rm = T))
ggplot(plot.df, aes(x = x, y = y)) + geom_point()

对于折线图,x 需要是数字:

plot.df <- data.frame(x = c(1:ncol(mydf)),
                      y = colMeans(mydf, na.rm = T))
# You may want to adjust the scale for proper values
ggplot(plot.df, aes(x = x, y = y)) + 
  geom_line() + 
  scale_x_continuous(breaks = c(1:ncol(mydf)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多