ฉันมีชุดข้อมูลที่เริ่มต้นดังนี้:
set.seed(50)
n <- 20
s_num <- c(10,20,30)
counts <- c(0,1,2,3,4)
strata <- sample(s_num, n, replace=T)
sites <- seq(1, n, by=1)
observed <- sample(counts, n, replace=T)
df <- as.data.frame(cbind(strata,sites,observed))
ฉันสามารถจัดกลุ่มตามชั้นและรับค่าเฉลี่ยและความแปรปรวนโดยใช้ dplyr โดย:
library(dplyr)
df2 <- df %>%
group_by(strata) %>%
summarise(mcount = mean(observed),
varcount = var(observed))
ปัญหาคือ 0 จำนวนไม่อยู่ในฐานข้อมูลอีกต่อไป:
df3 <- subset(df,observed != 0)
ดังนั้นค่าเฉลี่ยและความแปรปรวนจึงไม่ถูกต้อง:
df4 <- df3 %>%
group_by(strata) %>%
summarise(mcount = mean(observed),
varcount = var(observed))
แต่ฉันมีจำนวนไซต์:
site_count <- df %>%
group_by(strata) %>%
summarise(count_plot = n_distinct(sites))
ฉันยังสามารถใช้ dplyr เพื่อคำนวณความแปรปรวนเฉลี่ยโดยไม่มี 0 ได้หรือไม่ ความหมายจริงๆ แล้วไม่ยากเกินไปด้วยการรวมจำนวนไซต์เป็น df; ความแปรปรวนนั้นยากกว่า ฉันสามารถเพิ่ม 0 แถวกลับเข้าไปได้หากจำเป็น แต่ต้องการดูว่ามีวิธีง่ายๆ ในการแก้ไขหรือไม่หากเป็นไปได้ ขอบคุณ.