我是R的新手,我在迭代矢量的唯一元素时遇到了一些麻烦。我有一个数据框“学校”,有700名不同的老师。每位老师有大约40名学生。
我希望能够遍历每位老师,为他/她的学生创建一个平均分数的图表,将图表保存在一个文件夹中,并自动将该文件夹发送给该老师。
我刚开始使用并且无法设置for循环。在Stata中,我知道如何循环遍历列表中的每个唯一元素,但是在R中执行此操作时遇到了麻烦。任何帮助都将受到赞赏。
School$Teacher School$Student School$ScoreNovember School$ScoreDec School$TeacherEmail
A 1 35 45 A@school.org
A 2 43 65 A@school.org
B 1 66 54 B@school.org
A 3 97 99 A@school.org
C 1 23 45 C@school.org
答案 0 :(得分:1)
您的问题似乎有点模糊,看起来您希望我们编写您的整个项目。你能分享你到目前为止所做的事情以及你在哪里挣扎吗?
请参阅?subset
School=data.frame(Teacher=c("A","B"), ScoreNovember=10:11, ScoreDec=13:14)
for (teacher in unique(School$Teacher)) {
teacher_df=subset(School, Teacher==teacher)
MeanScoreNovember=mean(teacher_df$ScoreNovember)
MeanScoreDec =mean(teacher_df$ScoreDec)
# do your plot
# send your email
}
答案 1 :(得分:0)
我认为你有3个问题需要单独的问题,我该怎么做:
对于第三个,我喜欢使用plyr
包,其他人会推荐data.table
或dplyr
个包。您也可以使用基地的aggregate
。得到老师的意思:
library(plyr)
ddply(School,.(Teacher),summarise,Nov_m=mean(ScoreNovember))
如果您希望每位学生每位教师等,只需在列之间添加,例如:
library(plyr)
ddply(School,.(Teacher,Student),summarise,Nov_m=mean(ScoreNovember))
如果您的数据很长而不是宽,您可以为每个得分列执行此操作(然后绘制图表),您也可以将日期(“11月”,“12月”)作为一组添加到括号中,或者:< / p>
library(plyr)
ddply(School,.(Teacher,Student),summarise,Nov_m=mean(ScoreNovember),Dec_m=mean(ScoreDec))
看看这对第3个是否有帮助,但也要考虑将问题分开。