วิธีค้นหาสถิติสรุปสำหรับชุดค่าผสมที่ไม่ซ้ำกันทั้งหมดใน data.frame ใน R [ปิด]


11

ฉันต้องการคำนวณสรุปของตัวแปรใน data.frame สำหรับชุดค่าผสมแต่ละตัวที่ไม่ซ้ำกันของปัจจัยใน data.frame ฉันควรใช้ plyr เพื่อทำสิ่งนี้หรือไม่? ฉันตกลงกับการใช้ลูปแทนการใช้ (); ดังนั้นการหาชุดค่าผสมที่ไม่ซ้ำกันแต่ละชุดจะเพียงพอ


1
คำถามทำให้เข้าใจผิดเมื่อคุณถามเกี่ยวกับการรวมกันของปัจจัยที่ไม่ซ้ำกันแล้วในรายละเอียดที่คุณถามเกี่ยวกับการสรุปโดยการรวมกันที่ไม่ซ้ำกัน
Wojtek

คำตอบ:


7

ในขณะที่ฉันคิดว่า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

จากนั้นคุณสามารถวนซ้ำแต่ละแถวในเฟรมข้อมูลผลลัพธ์เพื่อดึงระเบียนจากข้อมูลดั้งเดิมของคุณ


11

ดูและ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)

1
คำตอบที่ถูกต้องในการทำงานที่รวดเร็วที่สุด
จอห์น

3

นี่คือโซลูชัน 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'
)

ขอบคุณ! สิ่งนี้ใช้ได้ผลแม้ว่าฉันจะต้องใส่เครื่องหมายจุลภาคในการเรียกไปยัง data.frame สถิติ = ddply (.data = ords, .variables =. (สัญลักษณ์, SysID, ชั่วโมง), .fun = ฟังก์ชั่น (x) {to_return = data.frame (s = ผลรวม (xกำไร) ) return (to_return)}, .progress = 'text')Profit),m=mean(x

1

นอกเหนือจากคำแนะนำอื่น ๆ คุณอาจพบว่าdescribe.by()ฟังก์ชั่นในpsychแพ็คเกจมีประโยชน์ มันสามารถใช้ในการแสดงสถิติสรุปเกี่ยวกับตัวแปรตัวเลขในระดับของตัวแปรปัจจัย


1

ฉันชอบโดยส่วนตัวcast()จากแพคเกจการก่อร่างใหม่เพราะมันเป็นเรื่องง่าย:

library(reshape)
cast(melt(tips), sex ~ smoker | variable, c(sd,mean, length))

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.