我有一个包含31个变量的学生数据框架。为了解决这个问题,我只对下面的专栏感兴趣。我把它们安排成这样来做示范:
id year action
1 2009-10 A
2 2009-10 A
3 2009-10 A
1 2010-11 A
2 2010-11 declined
3 2010-11 declined
1 2011-12 A我想对三年来的学生入学情况做一份总结。创建一个频率表使我非常接近我想要的结果:
table(dem$id, dem$year)
2009-10 2010-11 2011-12
1 1 1 1
2 1 1 0
3 1 1 0但是,它没有考虑到“action”列(显然)。我需要根据
( 1)学生辍学了吗?如果他们在2009-10年后退出,这个数据库中将不会有他们的记录。
2)他们接受吗?如果答案不是"A",学生就不会接受
我理想的输出应该如下所示:
id 2009-10 2010-11 2011-12
1 1 1 1
2 1 0 0
3 1 0 0我尝试了ddply(汇总)和ifelse()的一些组合,但是我的实现肯定很奇怪,因为我没有得到我需要的结果
发布于 2014-04-22 20:14:52
为什么不:
table(dem[c("id", "year", "action")])生产:
, , action = A
year
id 2009-10 2010-11 2011-12
1 1 1 1
2 1 0 0
3 1 0 0
, , action = declined
year
id 2009-10 2010-11 2011-12
1 0 0 0
2 0 1 0
3 0 1 0如果您只想要A,您也可以子集dem (尽管action需要成为字符才能显示A):
table(subset(dem[c("id", "year", "action")], action=="A"))https://stackoverflow.com/questions/23229233
复制相似问题