私はこのようなdfを持っています:
library(dplyr)
library(data.table)
library(ggplot2)
library(scales)
Events <- c("A_1","A_2","A_3","B_1","B_2","B_3","C_1","C_2","C_3","D_1","D_2","D_3","E_1","E_2","E_3")
Percentage_Occur <- c(4.6,6.5,1.3,3.4,6.6,5.5,7.8,2.2,2.4,2.1,6.6,5.9,4.9,11.1,4.3)
df1 <- data.frame(Events,Percentage_Occur)
これらのサブイベントを個々のカテゴリに組み合わせて上位 3 つのイベントを決定しようとしているので、次のようにします。
df2 <- data.frame(df1)
df2$Events <- gsub("*_.*", "\\1", df2$Events)
df2 <- df2 %>% group_by(Events) %>% summarise_each(funs(sum(., na.rm = T)))
df2 <- df2[ order(-df2[,2]), ]
ggplot(df2, aes(reorder(Events,Percentage_Occur), Percentage_Occur)) +
geom_bar(stat = "identity") + coord_flip() +
xlab("Events")
上位 3 つのイベント (この場合は E、B、D) を視覚化できたら、これらの上位 3 つのイベントのサブ イベントを別のプロットにプロットしたいと思います。
トップイベントのサブイベントを抽出することで、これを手動で行いました。これはサンプル データセットなので、実行できました。私が持っているより大きなデータセットにロジックを適用したいと思います。
私が望むのは、トップイベントを特定し(私ができることです)、データフレームを手動で見て抽出することなく、それらのトップイベントに対応するサブイベントをプログラムでプロットすることだけです。理由の 1 つは、これらのイベントが時間の経過とともに変化し、このタイプのロジックを 2 時間ごとに実行して、トップに到達する新しいイベントを確認するためです。これについてご意見をお寄せいただき、前進するのを手伝ってください。
注: 私もより良い色をしたいと思います。