我有一个分数较高的课程,分数和学生ID。它看起来是这样的(多了很多变数,除去简化):使用data.table制表学校成绩(长表格到宽表格)
studentID course grade
--------------------------------
1 chemistry 86
2 chemistry 85
2 math 72
3 english 52
3 math 90
...
我需要的是大文件转换为每个学生都有自己的同牌号为所有不同的课程排的文件。更多的东西是这样的:
studentID chemistry math english
----------------------------------------
1 86 NA NA
2 85 72 NA
3 NA 90 52
下面是创建我的采样分贝代码:
course.db <- data.table(
studentID=c("1", "2", "2", "3", "3"),
course=c("chemistry", "chemistry", "math", "english", "math"),
grade=c(86, 85, 72, 52, 90)
)
我最常做的是我创建与通常的信息一个学生档案数据库(GPA,学校等)是这样的:
student.files <- course.db[, .(
average=mean(grade, na.rm=T) #more vars are created here
), by="studentID"]
然后我创建另一个表与I级需要:
math.grades <- course.db[course=="math", .(
math=grade
), by="studentID"]
然后我合并整个事情。当只有几门课程可以获得成绩时,这种方法就行得通了。但我需要编写至少十几门课程的成绩。所以我的问题是:如何根据“等级”栏的值有条件地分级?我在寻找:
#careful: not working code
student.files <- course.db[, .(
average = mean(grade, na.rm=T) #more vars are created here,
math = ThenAMiracleOccurs("math", grade),
english = ThenAMiracleOccurs("english", grade),
chemistry = ThenAMiracleOccurs("chemistry", grade),
), by="studentID"]
看看''的data.table'不需要调用'dcast.data.table',只要'course.db'已经dcast' – HubertL