我正在group by
尝试R
通过plyr
名为ddply
. 我有一个数据框,它有三列(比如和id
)。然后,我想计算每个出现在数据框中的次数(with )并获取每个对应于 column的最后一个元素。period
event
id
count(*)... group by id
SQL
id
event
这是我拥有的以及我想要获得的示例:
id period event #original data frame
1 1 1
2 1 0
2 2 1
3 1 1
4 1 1
4 1 0
id t x #what I want to obtain
1 1 1
2 2 1
3 1 1
4 2 0
这是我一直在使用的简单代码:
teachers.pp<-read.table("http://www.ats.ucla.edu/stat/examples/alda/teachers_pp.csv", sep=",", header=T) # whole data frame
datos=ddply(teachers.pp,.(id),function(x) c(t=length(x$id), x=x[length(x$id),3])) #This is working fine.
现在,我一直在阅读The Split-Apply-Combine Strategy for Data Analysis并给出了一个示例,其中他们使用了与我在下面放置的语法等效的语法:
datos2=ddply(teachers.pp,.(id), summarise, t=length(id), x=teachers.pp[length(id),3]) #using summarise but the result is not what I want.
这是我使用的数据框datos2
id t x
1 1 1
2 2 0
3 1 1
4 1 1
所以,我的问题是:为什么这个结果与我使用第一段代码得到的结果不同,我的意思是datos1
?我究竟做错了什么?
我不清楚什么时候必须使用summarise
or transform
。你能告诉我这个ddply
函数的正确语法吗?