2

いくつかの学校の生徒のデータがあります。Rを使用して、各学校でテストに合格したすべての生徒の割合のヒストグラムを表示したいと思います。私のデータは次のようになります(id、school、passed / failed):

432342school1合格

454233school2が失敗しました

543245school1が失敗しました

等'

(要点は、合格した生徒の割合だけに関心があるということです。明らかに合格しなかった生徒は失敗しました。学校ごとに1つの列を作成して、その学校の合格した生徒の割合を示します)

ありがとう

4

3 に答える 3

2

それを行うには多くの方法があります。1つは:

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])
于 2010-10-04T08:49:01.687 に答える
2

私の以前の答えは完全には行きませんでした。これがやり直しです。例は@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")

ここに画像の説明を入力してください

于 2010-10-04T10:37:45.313 に答える
0

個別のレコード(id)があり、インデックス(school)に基づいて計算したいので、これをお勧め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)
于 2010-10-04T17:55:18.127 に答える