我有來自幾所學校的學生的數據。我想表明,在每所學校通過了測試的所有學生的百分比柱狀圖,用R. 我的數據是這樣的(ID,學校,合格/不合格):使用二進制值時R中的直方圖
432342 school1通過
454233個school2失敗
543245 school1失敗
等」
(的一點是,我只是在通過學生的百分比感興趣明顯那些沒有經過都失敗了。我要爲每個顯示學生的百分比在這所學校,學校通過一列)
感謝
我有來自幾所學校的學生的數據。我想表明,在每所學校通過了測試的所有學生的百分比柱狀圖,用R. 我的數據是這樣的(ID,學校,合格/不合格):使用二進制值時R中的直方圖
432342 school1通過
454233個school2失敗
543245 school1失敗
等」
(的一點是,我只是在通過學生的百分比感興趣明顯那些沒有經過都失敗了。我要爲每個顯示學生的百分比在這所學校,學校通過一列)
感謝
有很多方法可以做到這一點。 其中之一是:
df<-data.frame(ID=sample(100),
school=factor(sample(3,100,TRUE),labels=c("School1","School2","School3")),
result=factor(sample(2,100,TRUE),labels=c("passed","failed")))
p<-aggregate(df$result=="passed"~school, mean, data=df)
barplot(p[,2]*100,names.arg=p[,1])
我以前的答案並沒有完全解決。這是一個重做。例子是@ eyjo的答案。
students <- 400
schools <- 5
df <- data.frame(
id = 1:students,
school = sample(paste("school", 1:schools, sep = ""), size = students, replace = TRUE),
results = sample(c("passed", "failed"), size = students, replace = TRUE, prob = c(.8, .2)))
r <- aggregate(results ~ school, FUN = table, data = df)
r <- do.call(cbind, r) # "flatten" the result
r <- as.data.frame(cbind(r, sum = rowSums(r)))
r$perc.passed <- round(with(r, (passed/sum) * 100), 0)
library(ggplot2)
ggplot(r, aes(x = school, y = perc.passed)) +
theme_bw() +
geom_bar(stat = "identity")
你能解釋一下這些步驟中的每一步嗎?我不確定在哪裏創建df結尾並開始繪製圖表。 – 2016-10-08 18:54:56
@TravisHeeter感謝您對此進行了檢測。除繪圖之外,我的圖形不能真正解決問題。唯一的繪圖部分是最後一行。請注意'qplot'不應該再使用,'ggplot'應該被使用,這就是爲什麼我完全重用了我的答案。 – 2016-10-09 07:06:25
愛重做。感謝陌生人。 – 2016-10-09 12:51:03
既然你有單獨的記錄(ID),並希望基於指數(學校)來計算我建議tapply
這一點。
students <- 400
schools <- 5
df <- data.frame("id" = 1:students,
"school" = sample(paste("school", 1:schools, sep = ""),
size = students, replace = TRUE),
"results" = sample(c("passed", "failed"),
size = students, replace = TRUE, prob = c(.8, .2)))
p <- tapply(df$results == "passed", df$school, mean) * 100
barplot(p)
我在運行代碼時遇到錯誤。特別是在** aggregate **之後:'as.data.frame.default(x)中的錯誤:不能將類「公式」轉換爲data.frame' – csgillespie 2010-10-04 10:04:00
適用於R-2.11.1中的我。 – Marek 2010-10-04 10:57:59
@csgillespie,R 2.11.1中的聚合體改進以接受其論證的公式。這實際上是很大的改進。 – kohske 2010-10-04 11:13:58