关于集合函数的问题

时间:2015-07-19 01:15:36

标签: r spss aggregation

我是R用户,我正在尝试在R中重写一些二手SPSS代码。有人能给我一个关于这段代码实现的基本概念吗?:

AGGREG OUTFILE=*
/BREAK = subj task cond
/lat wind inwind primehit primefa =
mean(lat wind inwind primehit primefa)
/Ntrials = n.

一些背景信息是subjtaskcondlatwindinwindprimhitprimefa是我正在使用的数据集中的所有变量。

1 个答案:

答案 0 :(得分:2)

这是R中的样子:

#subj, task, cond, lat, wind, inwind, primhit, primefa
#Creating some fake data for you to aggregate by
df<-data.frame(subj=c(rep(1,10),rep(2,10),rep(3,10)),
           task=rep(c(rep("A",5),rep("B",5)),3),
           cond=rep(rep(c(rep(T,3),rep(F,2)),2),3),
           lat=rnorm(30,100,20),wind=rnorm(30,10,10),inwind=rnorm(30,5,1),
           primhit=rnorm(30,5000,75),primefa=rnorm(30,200,30))
aggregate(df[,-c(1:3)],by=list(df$subj,df$task,df$cond),FUN="mean")

(截断的)输出应该与此类似(由于rnorm会有所不同):

   Group.1 Group.2 Group.3       lat      wind   inwind  primhit  primefa
1        1       A   FALSE 102.96070  5.637264 5.213994 5043.498 213.3119
2        2       A   FALSE 114.91123 11.161194 5.004008 5055.676 221.1172
....
11       2       B    TRUE  97.04035  6.450370 4.755714 5113.725 196.4184
12       3       B    TRUE 114.92453 12.888350 4.667839 5022.614 199.3125

基本上,SPSS代码执行相同的操作,其中/ BREAK是BY列表,第三行是重新定义变量以取得给定主题,任务和条件的均值。 / Ntrials给出了给定组的病例数。您可以执行aggregate(df[,1)],by=list(df$subj,df$task,df$cond),FUN="length")

之类的操作

如果您需要查找SPSS内容,我建议使用ats.ucla.edu(http://www.ats.ucla.edu/stat/spss/seminars/spss_syntax08/default08_part2.htm)。他们有一些最全面的教程。