2016-05-18 3 views
1

は、だから私は、この表は、コース内の指定されたモジュールの(値)%を完了した人の数を示し Completionカテゴリを値の範囲(パーセンテージ)に割り当ててソートしますか?

dput(Completion) 

structure(list(value = structure(1:16, .Label = c("0%", "100%", "13%", "15%","16%", "24%", "26%", "28%", "33%", "40%", "50%", "53%", "66%", "73%", "75%", "93%"), class = "factor"), All = c(13L, 0L, 3L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 2L, 0L, 1L, 0L, 3L), 
M0 = c(14L, 10L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
0L, 0L, 0L, 0L), M1 = c(17L, 6L, 0L, 0L, 0L, 0L, 0L, 1L, 
0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L), M2 = c(21L, 4L, 0L, 0L, 
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), M3 = c(21L, 
2L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 2L, 0L)), 
.Names = c("value", "All", "M0", "M1", "M2", "M3"), row.names = c(NA, 16L), class = 
c("cast_df", "data.frame"), idvars = "value", rdimnames = list(structure(list(value = 
structure(1:16, .Label = c("0%", "100%", "13%", "15%", "16%", "24%", "26%", "28%", "33%", 
"40%", "50%", "53%", "66%", "73%", "75%", "93%"), class = "factor")), 
.Names = "value", row.names = c("0%", "100%", "13%", "15%", "16%", "24%", "26%", "28%", 
"33%", "40%", "50%", "53%", "66%", "73%", "75%", "93%"), class = "data.frame"), 
structure(list(Module = structure(1:5, .Label = c("All", 
"M0", "M1", "M2", "M3"), class = "factor")), .Names = "Module", row.names = c("All", 
"M0", "M1", "M2", "M3"), class = "data.frame")), .Label = 
c("0-49","50-59","60-69", "70-79", 
"80-89", ">90")) 

と呼ばれる私は私にこのテーブルを与えるように操作しているCSVファイルを持っています。

私がしたいのは、次のように値のカテゴリを作成することです。 大部分(90%-100%)、実質(75%〜89%)、部分(50%〜74%)、最小(1%〜49%)、不完全(0%)

   M0  M1  M2  M3  All 
Majority  1  2  3  4  5 
Substantial 5  4  3  2  1 
Partial  4  3  2  1  5 
Minimal  3  2  1  5  4 
Incomplete  2  1  5  4  3 

インスタンスのそれぞれのカウントは、テーブルを埋めるになります。このように、モジュールによってこののすべてのインスタンスの数を取得することができます。

これを行う方法はありますか?私は別のピボットテーブルを作ってレベルをつけようとしました。

comp.rate <- Completion$value 
comp.rate <- ordered(comp.rate, levels = c("Majority", "Substantial", "Partial", "Minimal", 
"Incomplete")) 

私は、これらのレベルに私がしたい値を代入してから、順番に、Rは、彼らの出現を吐き出すために取得する方法がわからないと思います。私は値がパーセント形式であるために問題を抱えていました...そして小数ではありません。私は完全なコードを添付していませんが、それが使用されている場合、私はすることができます... 助けを非常に感謝します。ありがとう!

+0

他の人があなたの例を素早く再現できるように、スクリーンショットの代わりに 'dput(Completion)'の出力をここに入れてください。さらに、 'data.frame'の' Completion'の解釈についてもっと明確にすることができますか?例えば、All = 13の最初の行(0%)と最後の行(93%)との関係すべて= 3? – JasonAizkalns

+0

ねえ!あなたが何を意味しているのか教えてください...値の列は、このコースの参加者が完了したさまざまなパーセンテージのすべてです。あなたの例(0%;すべて= 13)は、コース全体で13人が0%を完了したことを意味します。最後の行は、3人がコースの93%を修了したことを意味します。モジュールと同じです。 M2の5行目では、1人がそのモジュールの16%を完了しました。可能性のあるすべてのパーセンテージの代わりに、そのパーセンテージを範囲に入れたいと思います。他に何かを説明できるかどうか教えてください。これは私の最初の投稿ですので、私は尋ねるのが初めてです:Pありがとう! –

答えて

1

あなたはこのような何か行うことができます。

:あなたは、あなたが条件と colSumsを使用して、すべての出現箇所を数えることができる gsub

d$value <- as.numeric(gsub("[%]", "", d$value)) 

を使用して数値1にパーセンテージ列を変換する必要が

ファーストを

#Majority(90%-100%) 
colSums(d[ d$value >= 90, ]) 
value All M0 M1 M2 M3 
    193  3 10  6  4  2 

# or Substantial(75%-89%) 
colSums(d[ d$value >= 75 & d$value < 89, ]) 
value All M0 M1 M2 M3 
    75  0  0  0  0  2 

すべてを1つのデータフレームに保存します。

a1 <- colSums(d[ d$value >= 90,]) 
a2 <- colSums(d[ d$value >= 75 & d$value < 89, ]) 
result <- data.frame(rbind(a1, a2)) 
result$value <- c("Majority", "Substantial") 
result 
     value All M0 M1 M2 M3 
a1 Majority 3 10 6 4 2 
a2 Substantial 0 0 0 0 2 
+0

ありがとうございました!これは完全に機能しました! –

関連する問題