r - 是否有一个 R 函数相当于 Excel 的 $ 用于“保持参考单元常数”
问题描述
我是 R 新手,我已经尽我所能在谷歌上搜索以下问题的答案,但到目前为止还没有出现任何问题。
在 Excel 中,您可以在使用引用时通过将 $ 放在行号或列字母之前来保持特定列或行不变。当所有单元格都引用单个其他单元格中的某些内容时,这在跨多个单元格执行操作时很方便。例如,获取一个包含课程成绩的数据集:第 1 行是每个班级作业的总分(每列是一个作业),第 2:31 行是 30 名学生中每个学生的原始分数。在 Excel 中,为了计算正确百分比,我将每个学生在该作业中的分数引用到第一行,在引用中保持行不变,这样我就可以向下拖动并将该操作应用于第 1 行下方的所有 30 行。最重要的是,在 Excel 中,我还可以向右拖动以跨所有列执行此操作,而无需键入新操作。
执行此操作的最有效方法是什么 - 在对所有其他行执行操作时保持引用行常量,然后在 R 中在保持引用行常量的同时跨列应用它?到目前为止,我必须将参考行切片到一个新数据帧,从原始数据帧中删除该行,然后在每列键入一个操作,同时手动返回新数据帧以查找参考号以申请该列的操作。请参阅下面我的超级乏味的代码。
作为参考,每一列都是一个作业,第 1 行有该作业可能获得的分数。随后的所有行都是个别学生和他们的成绩。
# Extract number of points possible
outof <- slice(grades, 1)
# Now remove that row (Row 1)
grades <- grades[-c(1),]
# Turn number correct into percentage. The divided by
# number is from the sliced Row 1, which I had to
# look up and type one-by-one. I'm hoping there is
# code to do this automatically in R.
grades$ExamFinal < (grades$ExamFinal / 34) * 100
grades$Exam3 <- (grades$Exam3 / 26) * 100
grades$Exam4 <- (grades$Exam4 / 31) * 100
grades$q1.1 <- grades$q1.1 / 6
grades$q1.2 <- grades$q1.2 / 10
grades$q1.3 < grades$q1.3 / 6
grades$q2.2 <- grades$q2.2 / 3
grades$q2.4 <- grades$q2.4 / 12
grades$q3.1 <- grades$q3.1 / 9
grades$q3.2 <- grades$q3.2 / 8
grades$q3.3 <- grades$q3.3 / 12
grades$q4.1 <- grades$q4.1 / 13
grades$q4.2 <- grades$q4.2 / 5
grades$q6.1 <- grades$q6.1 / 5
grades$q6.2 <- grades$q6.2 / 6
grades$q6.3 <- grades$q6.3 / 11
grades$q7.1 <- grades$q7.1 / 7
grades$q7.2 <- grades$q7.2 / 8
grades$q8.1 <- grades$q8.1 / 7
grades$q8.3 <- grades$q8.3 / 13
grades$q9.2 <- grades$q9.2 / 13
grades$q10.1 <- grades$q10.1 / 8
grades$q12.1 <- grades$q12.1 / 12
解决方案
You can use sweep
100*sweep(grades, 2, outof, "/")
# ExamFinal EXam3 EXam4
#1 100.00 76.92 32.26
#2 88.24 84.62 64.52
#3 29.41 100.00 96.77
Data:
grades
ExamFinal EXam3 EXam4
1 34 20 10
2 30 22 20
3 10 26 30
outof
[1] 34 26 31
grades <- data.frame(ExamFinal=c(34,30,10),
EXam3=c(20,22,26),
EXam4=c(10,20,30))
outof <- c(34,26,31)
推荐阅读
- ios - swift - 在editingDidEnd 后texfield 调用editingDidBegin
- wordpress - WordPress ACF 用户字段未通过
- delphi - 如何在 TRichEdit 的顶部插入新的、未格式化的行
- c# - 布尔值和数组问题
- javascript - 如何改变`
`在` - postgresql - “未能提交主管:请求失败,状态码 502”向路由器提交摄取规范
- javascript - 如何改变身体等级
- python - Python matplotlib:从matplotlib的工具栏中删除“配置子图”工具会导致错误
- windows - 检索 Windows 10 电源模式滑块的状态
- python - 在列表中查找字符串的列表理解?