use*_*323 0 aggregate r subset plyr
我有一个包含三个变量(ACC和类型和ID)的数据框,其中ACC指的是决策的准确性,类型是指30种不同的决策类型,对于参与者的每种决策类型重复15次,ID指的是对参与者.它看起来像这样:
ID ACC Type
1 1 1
1 0 3
1 1 10
etc...
2 1 5
2 0 13
2 0 11
etc...
Run Code Online (Sandbox Code Playgroud)
我的目标是分析参与者中每种决策类型的准确性,并将数据合并到数据框中.如:
ID ACC_Type1 ACC_Type2 […] ACC_Type30
1 70 65 87
2 65 50 90
etc...
Run Code Online (Sandbox Code Playgroud)
到目前为止,我能够通过单独分组决策类型来计算,但是,我正在寻找一种更智能的方法来避免单独键入决策类型值:
library(data.table)
library(plyr)
dt <- data.table(d,key="Type")
dt_Type1<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==1),mean))
dt_Type2<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==2),mean))
[]
dt_Type30<-data.frame (aggregate(ACC~ID,data=subset(dt,Type==30),mean))
total <- merge(dt_Type1,dt_Type2 […] Type30,by="ID")
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
使用Ananda的数据,可以获得以下data.table解决方案:
require(data.table)
dt <- data.table(mydf)
setkey(dt, "TYPE", "ID")
dt[, mean(ACC), by=key(dt)][, setattr(as.list(V1), 'names',
paste0("ACC", ID)), by=TYPE]
# TYPE ACC1 ACC2 ACC3
# 1: 1 3.0 2.5 3.0
# 2: 2 1.5 2.0 3.0
# 3: 3 4.0 2.0 4.5
Run Code Online (Sandbox Code Playgroud)