ฉันต้องการคำนวณสรุปของตัวแปรใน data.frame สำหรับชุดค่าผสมแต่ละตัวที่ไม่ซ้ำกันของปัจจัยใน data.frame ฉันควรใช้ plyr เพื่อทำสิ่งนี้หรือไม่? ฉันตกลงกับการใช้ลูปแทนการใช้ (); ดังนั้นการหาชุดค่าผสมที่ไม่ซ้ำกันแต่ละชุดจะเพียงพอ
ฉันต้องการคำนวณสรุปของตัวแปรใน data.frame สำหรับชุดค่าผสมแต่ละตัวที่ไม่ซ้ำกันของปัจจัยใน data.frame ฉันควรใช้ plyr เพื่อทำสิ่งนี้หรือไม่? ฉันตกลงกับการใช้ลูปแทนการใช้ (); ดังนั้นการหาชุดค่าผสมที่ไม่ซ้ำกันแต่ละชุดจะเพียงพอ
คำตอบ:
ในขณะที่ฉันคิดว่าaggregate
น่าจะเป็นทางออกที่คุณกำลังมองหาหากคุณต้องการสร้างรายการที่ชัดเจนของชุดค่าผสมที่เป็นไปได้ทั้งหมดexpand.grid
จะทำเพื่อคุณ เช่น
> expand.grid(height = seq(60, 80, 5), weight = seq(100, 300, 50),
sex = c("Male","Female"))
height weight sex
1 60 100 Male
2 65 100 Male
...
30 80 100 Female
31 60 150 Female
จากนั้นคุณสามารถวนซ้ำแต่ละแถวในเฟรมข้อมูลผลลัพธ์เพื่อดึงระเบียนจากข้อมูลดั้งเดิมของคุณ
ดูและaggregate
by
ตัวอย่างเช่นจากไฟล์ช่วยเหลือสำหรับaggregate
:
## Compute the averages according to region and the occurrence of more
## than 130 days of frost.
aggregate(state.x77,
list(Region = state.region,
Cold = state.x77[,"Frost"] > 130),
mean)
นี่คือโซลูชัน plyr ซึ่งมีข้อดีของการส่งคืนข้อมูลสรุปสถิติจำนวนมากและสร้างแถบความคืบหน้าสำหรับการคำนวณแบบยาว:
library(ez) #for a data set
data(ANT)
cell_stats = ddply(
.data = ANT #use the ANT data
, .variables = .(cue,flanker) #uses each combination of cue and flanker
, .fun = function(x){ #apply this function to each combin. of cue & flanker
to_return = data.frame(
, acc = mean(x$acc)
, mrt = mean(x$rt[x$acc==1])
)
return(to_return)
}
, .progress = 'text'
)
นอกเหนือจากคำแนะนำอื่น ๆ คุณอาจพบว่าdescribe.by()
ฟังก์ชั่นในpsych
แพ็คเกจมีประโยชน์ มันสามารถใช้ในการแสดงสถิติสรุปเกี่ยวกับตัวแปรตัวเลขในระดับของตัวแปรปัจจัย
ฉันชอบโดยส่วนตัวcast()
จากแพคเกจการก่อร่างใหม่เพราะมันเป็นเรื่องง่าย:
library(reshape)
cast(melt(tips), sex ~ smoker | variable, c(sd,mean, length))
ในlibrary(doBy)
นอกจากนี้ยังมีsummaryBy()
ฟังก์ชั่นเช่น
summaryBy(DV1 + DV2 ~ Height+Weight+Sex,data=my.data)