我的数据集由大约180个变量组成,因为我使用SPSS进行数据输入(所以我可以在SPSS中运行分析,如果我第一次尝试使用R需要太长时间/不起作用)我不得不重新编码-99和" kA"到" NA"。
所以我最终复制/粘贴recode()
功能很多,添加相应的变量。必须有更智能的方法来处理这样的问题 - 对吗?
我想创建一个线图,显示我的pollees的意见,包括他们的回答的平均值。 每个民意调查被问及他/她对几个项目的意见,并按照1-10的等级对其进行评级。因此,我希望看到每个项目的平均分数,看看人们是否更倾向于同意/不同意。 (我希望这些增加的信息有助于更好地理解这个问题)。再次 - 对于这个部分大约有20个左右的问题/项目,应该有比为每个变量编写代码更聪明的方法
我也想知道我是如何得到一个有用的形状的结果,所以我可以使用最终的方法 - 最好用ggplot2作为线图绘制它们。绘图本身不应该是一个太大的问题(即使我欣赏任何提示和技巧!) - 这里的主要问题是,如何将结果数据(手段)变成一个形状,继续处理他们(创建图表,子集)是可能/容易的。到目前为止,我的工作组中的方法是(使用SPSS)复制结果,粘贴到Excel中并在那里摆弄。
答案 0 :(得分:0)
如果您在SPSS中输入数据,则可以在那里定义缺失值。然后,您可以使用诸如haven
或sjmisc
之类的包来读取SPSS文件,其中缺失值会自动转换为NA
。
如果你想在之后做一些重新编码,你也可以从rec
包中查看sjmisc
,它允许一次重新编码一个完整的数据帧(所以不需要复制recode命令并且每次都用新的变量名替换。请参阅以下示例:
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数据集的示例,其中使用变量6到14(所有项目都有4项响应比例):
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)))