r - 如何通过对 R 中的所有列和选择列求和来计算问卷总分和子分数?
问题描述
我是 R 的新手,我遇到了一个小问题。我希望你们中的一些人可以帮助我!
我有一个 data.frame,包括单个问卷的答案。
行表示参与者。
第一列表示参与者 ID。
以下列包括问卷中每个项目的答案(item.1
最多item.20
)。
我需要创建两个新向量:
- total.score <- 每个参与者所有 20 个值的总和
- subscore <- 一些项目的总和
我想使用一个函数,比如sum(A:T)
Excel 中的 a 。
回顾一下,我使用的是 R 而不是其他软件。
我已经通过将每个向量与符号相加来做到这一点+
(数据$item.1 + data$item.2 + data$item.3 等等...)
但这是一种缓慢的方法。
每个项目的答案从 0 到 3 不等,所以我预计总分在 0 到 60 之间。
先感谢您!!
解决方案
如果您将 .csv 文件下载到您的工作目录
data <- read.csv("2016-SpanishSurveyBreastfeedingKnowledge-AELAMA.csv", sep = "\t")
项目名称是p01
, p02
, p03
... 假设您想要前五个问题的小计(从 p01 到 p05)
您可以为组命名:
FirstFive <- c("p01", "p02", "p03", "p04", "p05")
我认为这是值得的,因为您可能希望在该组中执行更多任务(分析、添加或删除组中的问题......),并且因为它可以帮助您提供有意义的名称(例如“知识”, “态度”...)
然后创建小计变量:
data$subtotal1 <- rowSums(data[ , FirstFive])
您可以检查新变量是否为总和
head(data[ , c(FirstFive, "subtotal2")])
(注意FirstFive
没有引用,因为是data外的对象,但是subtotal2
被引用了,因为是data中的变量名)
您可以计算更多小计并使用它们来计算全局分数
如果您知道这些变量是第 20 到 24 列,则可以节省一些击键:
names(data)[20:24]
然后将它们总结为
rowSums(data[ , c(20:24)])
我想这是你要求的,但我会避免这样做,因为更容易出错,很难被发现
推荐阅读
- c++ - 派生类的五法则
- python - Python 在 Windows 上以管理员身份运行命令
- java - IntelliJ 不在调试器中显示变量的属性值
- python - 为什么我从 twitter api 收到 Rate limit exceeded 错误 88?
- webpack - 无法在远程托管的 webpack 包中加载字体
- ionic4 - 如何在 Ionic 中以反应形式有条件地进行表单验证?
- javascript - 滴答(网格)在 D3.js 中被 Y 轴覆盖
- opengl - glDepthTest 问题(alpha 重叠)
- python - 选择性显示刺
- php - PHP 参数类型(选项)