列に何百ものレベルがあり、それらのすべてが実際に値を追加するわけではありません。つまり、レベルの約60%が<の80%を占めます(データフレームでは何度も発生しません)結果に影響を与えないことも期待されます。目的は、80%以上寄与しないレベルを排除することです。 誰かを助けることができますか?事前に感謝します寄与の少ない要素を削除する
-2
A
答えて
1
ここでは、データセット(行)の80%未満を占める値をスポットし、新しい値を使用してそれらをグループ化する単純なプロセスがあります。このプロセスでは、因子列ではなく文字列が使用されます。
library(dplyr)
# example dataset
dt = data.frame(type = c("A","A","A","B","B","B","c","D"),
value = 1:8, stringsAsFactors = F)
dt
# type value
# 1 A 1
# 2 A 2
# 3 A 3
# 4 B 4
# 5 B 5
# 6 B 6
# 7 c 7
# 8 D 8
# count number of rows for each type
dt %>% count(type)
# # A tibble: 4 x 2
# type n
# <chr> <int>
# 1 A 3
# 2 B 3
# 3 c 1
# 4 D 1
# add cumulative percentages
dt %>%
count(type) %>%
mutate(Prc = n/sum(n),
CumPrc = cumsum(Prc))
# # A tibble: 4 x 4
# type n Prc CumPrc
# <chr> <int> <dbl> <dbl>
# 1 A 3 0.375 0.375
# 2 B 3 0.375 0.750
# 3 c 1 0.125 0.875
# 4 D 1 0.125 1.000
# pick the types you want to group together
dt %>%
count(type) %>%
mutate(Prc = n/sum(n),
CumPrc = cumsum(Prc)) %>%
filter(CumPrc > 0.80) %>%
pull(type) -> types_to_group
# group them
dt %>% mutate(type_upd = ifelse(type %in% types_to_group, "Rest", type))
# type value type_upd
# 1 A 1 A
# 2 A 2 A
# 3 A 3 A
# 4 B 4 B
# 5 B 5 B
# 6 B 6 B
# 7 c 7 Rest
# 8 D 8 Rest
+0
ありがとうAntoniosK - 質問を理解するにはもちろん認知負荷があります:) – emeralddove
関連する問題
- 1. E4が共有要素に寄与する
- 2. jQuery remove()要素を削除しない
- 3. 削除要素
- 4. jQuery、削除は子要素を削除しない - 親だけ
- 5. テーブルビューのオブジェクトを削除する要素を削除します。
- 6. 要素のタッチイベントを削除する
- 7. leavedの要素を削除する
- 8. 要素の値を削除するXSLT
- 9. omnet ++モジュールの要素を削除する
- 10. リストの要素を削除する
- 11. ベクトルの要素を削除する
- 12. 次の要素を削除する - jquery
- 13. ArrayListの要素を削除する
- 14. 3要素タプルの最初の要素を削除する
- 15. 入れ子のフォーム要素は削除しますが、入力要素は削除しない正規表現
- 16. 予期しないスペースを削除する:before:after擬似要素
- 17. JQueryで要素を削除
- 18. Marketoモジュール - 要素の削除
- 19. ラベルを削除するneo4jのノードが少ない
- 20. 歴史の中で数少ないコミットを削除する
- 21. メモリが最も少ないDOM要素
- 22. リストから要素を削除する
- 23. Jqueryモバイルタップで要素を削除する
- 24. Nokogiriで要素を削除する
- 25. ダブルクリックでJquery要素を削除する
- 26. コレクションから要素を削除する
- 27. 要素を削除するjavascript jquery
- 28. リンクリストから要素を削除する
- 29. 子タグ/要素を削除する
- 30. リストから要素を削除する
downvoteへのok - 修正を加えるためにコメントを追加できますか?ありがとうございました。 – emeralddove
あなたは貢献して何を意味しますか?統計テストを使用していますか?どれ?生殖可能な例がありますか? –
まず、除外したいレベルを特定/指定する合理的な方法を見つける必要があります。統計的なテストに基づいて、または人気に基づいて(各行が非常に少ないレベル)に行うことができます。次に、それらを削除したいか(行全体を削除するか)、別のレベル(例:「休憩」)に再コードするかどうかを考える必要があります。 – AntoniosK