2017-12-25 14 views
3

「画像」に示すように、一意のカテゴリに依存する列の割合を計算しようとしています。 enter image description hereグループ変数による複数の数値変数の割合の計算

我々はTagが1つの列で、Longが、他の列である画像で見ることができるように。だからここで我々はLong列のパーセント計算を希望Unique Tag Noに基づいています。全てTag=1Long例えばMediumなどの他の列ごとTagと割合算出についても同様Total 2376.カラム1004 is 0.42%544 is 0.22%545 is 0.22%282 is 0.11%1 is 0.00%ShortUrgent内の値の例のいずれかで行われるべきです。

df <- data.frame(Tag = c(1 ,1 ,1 ,1 ,1 ,2 ,2 ,2 ,2 ,2), 
     YPred = c("L1", "L2" ,"L3", "L4", "L5", "L1", "L2", "L3", "L4", "L5"), 
     Long = c(1004 , 544 , 545 , 282 , 1 ,2068 ,3006 ,3711 ,2342 , 33), 
     Medium = c(108, 252, 211, 149, 0, 17, 110, 248, 341, 4), 
     short = c(58, 118, 131, 73, 4, 0, 43, 150, 189,2), 
     Urgent = c(5, 70, 65, 24 , 5 ,22 ,18, 31 ,96, 2)) 

ここで、期待される出力は、カラーで書かれたイメージ出力です。ありがとうございます

+0

これまでに自分で試したコードはありませんでした。また、私は希望の出力をより詳細に表示しません - 既存の列を置き換え、addtional列を追加したい場合は、合計が印刷されるようにしたいのですか? – vaettchen

答えて

6

あなたの仕事を処理する一つの方法です。データはTagでグループ化します。次に、4つの列(つまり、LongMediumshort、およびUrgent)について説明した計算を行います。あなたは、各グループの各値を、各グループの値の合計で割り、mutate_at()にしています。

library(dplyr) 

group_by(df, Tag) %>% 
mutate_at(.vars = vars(Long:Urgent), 
      .funs = funs(./sum(., na.rm = TRUE))) 

#  Tag YPred   Long  Medium  short  Urgent 
# <dbl> <fctr>  <dbl>  <dbl>  <dbl>  <dbl> 
# 1  1  L1 0.4225589226 0.150000000 0.151041667 0.02958580 
# 2  1  L2 0.2289562290 0.350000000 0.307291667 0.41420118 
# 3  1  L3 0.2293771044 0.293055556 0.341145833 0.38461538 
# 4  1  L4 0.1186868687 0.206944444 0.190104167 0.14201183 
# 5  1  L5 0.0004208754 0.000000000 0.010416667 0.02958580 
# 6  2  L1 0.1853046595 0.023611111 0.000000000 0.13017751 
# 7  2  L2 0.2693548387 0.152777778 0.111979167 0.10650888 
# 8  2  L3 0.3325268817 0.344444444 0.390625000 0.18343195 
# 9  2  L4 0.2098566308 0.473611111 0.492187500 0.56804734 
#10  2  L5 0.0029569892 0.005555556 0.005208333 0.01183432 
+0

'' argument ".cols"私がShiny enviormentの中で上記のコードを実行すると、デフォルトなしで行方不明になります。もしそれが完全にうまく動いているならば、光沢のある環境では、指定されているようにエラーを出しています。 –

関連する問題