r - 从长到宽的 R 挑战
问题描述
data1=data.frame("StudentID"=c(1,1,1,2,2,2,2,3,3,3,3),
"Class"=c(1,1,1,1,1,1,1,2,2,2,2),
"Grade"=c(1,2,3,1,2,3,4,1,2,3,4),
"Time"=c(11,12,13,15,17,17,18,6,7,8,9),
"Fail"=c(1,1,1,0,0,0,0,0,0,0,0),
"Score"=c(6,6,5,6,9,10,7,9,7,9,6))
data2=data.frame("StudentID"=c(1,2,3),
"Class"=c(1,1,2),
"Fail"=c(1,0,0),
"Time1"=c(11,15,6),
"Score1"=c(6,6,9),
"Time2"=c(12,17,7),
"Score2"=c(6,9,7),
"Time3"=c(13,17,8),
"Score3"=c(5,10,9),
"Time4"=c(-99,18,9),
"Score4"=c(-99,7,6))
我有'data1'并希望通过重塑'data1'来获得'data2',如图所示。
解决方案
在这里,您可以使用dcast
fromdata.table
包(特别感谢@RonakShah 指出使用fill = -99
as 参数来填充缺失值):
dcast(setDT(data1), StudentID+Class+Fail ~ Grade, value.var = c("Time","Score"), fill = -99)
StudentID Class Fail Time_1 Time_2 Time_3 Time_4 Score_1 Score_2 Score_3 Score_4
1: 1 1 1 11 12 13 -99 6 6 5 -99
2: 2 1 0 15 17 17 18 6 9 10 7
3: 3 2 0 6 7 8 9 9 7 9 6
推荐阅读
- azure - 为什么 Azure DevOps 不选择具有整数参数的 ARM 部署?
- linux - 在编辑器中重定向 bash 脚本输出而不保存文件
- kubernetes - Azure Kubernetes 服务 - 即使我没有明确设置自动缩放,集群自动缩放器是否也会被触发?
- spring-mvc - 带有 Java 15 依赖项“Spring Web”的 Spring Starter 报告“执行失败”
- python - Python connect 4播放功能
- javascript - 根据chart.js中的计数和过滤器按月和周对数据进行分组
- java - 如何测量单向延迟?
- sas - 删除 SAS 中的重复子字符串
- javascript - (Vue 和 Firebase)我在将多个图像保存在数组中时遇到问题
- python - TF1 vs TF2,相同的随机种子,不同的结果