ฉันเพิ่งเริ่มใช้และมีชุดข้อมูลที่ซับซ้อน หวังว่าคำอธิบายของฉันจะถูกต้อง ฉันมีกรอบข้อมูลหลายกรอบที่ต้องใช้เพื่อทำสิ่งต่างๆ หลายอย่าง นี่คือตัวอย่างหนึ่ง ฉันมีกรอบข้อมูลสามกรอบ หนึ่งคือรายชื่อชนิดพันธุ์และรหัสที่เกี่ยวข้อง:
>df.sp
Species Code
Picea PI
Pinus CA
อีกรายการคือรายชื่อพื้นที่ที่มีข้อมูลความอุดมสมบูรณ์ของชนิดพันธุ์ตามสถานที่ต่างๆ (dir) น่าเสียดายที่ลำดับของสายพันธุ์นั้นแตกต่างกัน
>df.site
Site dir total t01 t02 t03 t04
2 Total PI CA AB T
2 N 9 1 5 na na
2 AB ZI PI CA
2 S 5 2 2 1 4
3 DD EE AB YT
3 N 6 1 1 5 3
3 AB YT EE DD
3 S 5 4 3 1 1
จากนั้นฉันก็มีกรอบข้อมูลของลักษณะที่สอดคล้องกับสายพันธุ์ด้วย:
>df.trait
Species leaft rootl
Picea 0.01 1.2
Pinus 0.02 3.5
ตัวอย่างของสิ่งหนึ่งที่ฉันต้องการทำคือรับค่าเฉลี่ยสำหรับแต่ละลักษณะ (df.trait$leaft และ df.trait$rootl) สำหรับสายพันธุ์ทั้งหมดต่อไซต์ (df.site$Site) และต่อตำแหน่งที่ตั้งของไซต์ (df.site$Site) ไซต์$ไซต์ N, S) ดังนั้นผลลัพธ์จะเป็นแถวแรก:
Site dir leaft rootl
2 N 0.015 2.35
ฉันหวังว่ามันจะสมเหตุสมผล มันซับซ้อนมากสำหรับฉันที่จะคิดว่าจะต้องทำอย่างไร ฉันได้ลองทำงานจากโพสต์นี้ และ สิ่งนี้ (และอื่น ๆ อีกมากมาย) แต่หลงทาง ขอบคุณสำหรับความช่วยเหลือ ชื่นชมจริงๆ.
อัปเดต: นี่คือตัวอย่างของ df.site จริง (ลดลง) โดยใช้ dput:
> dput(head(df.site))
structure(list(Site = c(2L, 2L, 2L, 2L, 2L, 2L), dir = c("rep17316",
"N", "", "S", "", "SE"), total = c("Total", "9", "",
"10", "", "9"), t01 = c("PI", "4", "CA", "1", "SILLAC",
"3"), t02 = c("CXBLAN", "3", "ZIZAUR", "4", "OENPIL", "2"),
t03 = c("ZIZAPT", "1", "ECHPUR", "2", "ASCSYR", "2")), .Names = c("site", "dir", "total", "t01", "t02", "t03"), row.names = 2:7, class = "data.frame")
df.site
ดูเหมือนจะอยู่ในสภาพที่แย่มากโดยที่คอลัมน์ไม่มีประเภทที่สอดคล้องกัน (เช่น คอลัมน์total
มีคำเช่นTotal
และตัวเลขเช่น9
คอลัมน์t04
มีคำเช่น"T"
(เว้นแต่ว่าเป็นบูลีน TRUE?) สตริงเช่น"na"
ซึ่งน่าจะไม่มีค่าNA
ตัวเลข เช่น4
และสตริงปกติ เช่น"CA"
ขั้นตอนแรกจะต้องทำให้ข้อมูลเป็นรูปเป็นร่างอย่างแน่นอน คุณช่วยแชร์ชุดย่อยของ data frame นั้นกับdput
เพื่อให้คัดลอก/วางได้ และ เราสามารถดูคอลัมน์ได้ทุกประเภทใช่ไหม (ถ้าแชร์คอลัมน์อื่นๆ ด้วยdput()
ก็คงจะดีไม่น้อย...) - person Gregor Thomas   schedule 12.02.2019dput(droplevels(df.site[1:10, ]))
น่าจะดี - person Gregor Thomas   schedule 12.02.2019df.site
และแก้ไขกระบวนการนำเข้า แทนที่จะพยายามแก้ไขข้อมูลที่ยุ่งเหยิงซึ่งเกิดขึ้น.... โดยไม่เห็นตัวอย่างแหล่งที่มา ก็ยากที่จะทราบว่าจะเป็นเช่นนั้นหรือไม่ งานจะน้อยลงหรือเปล่า. - person Gregor Thomas   schedule 12.02.2019Species
ตัวอย่างของคุณจะไม่ถูกตั้งชื่ออย่างเหมาะสมกว่าgenus
หรือไม่ :) - person DanTan   schedule 12.02.2019