カテゴリに基づいて動的にsample_n

ジャスブナー

2つの列IDcategoryを持つデータフレームがあります。このデータフレームから、各カテゴリから3つのサンプルを取得し、そのサンプルから、合計から6つのサブサンプルを取得しsub_dfて、6つの要素を持つデータフレームを取得します。

library(dplyr)
set.seed(123)
df <- data.frame(ID = 1:100, category = sample(LETTERS[1:10], 100, replace = T))
head(df)
#    ID category
#  1  1        C
#  2  2        H
#  3  3        E
#  4  4        I
#  5  5        J
#  6  6        A

sub_df <- df %>% group_by(category) %>% sample_n(3) %>% ungroup() %>% sample_n(6)
sub_df
#  # A tibble: 6 x 2
#       ID category
#    <int> <fct>   
#  1    72 G       
#  2    88 I       
#  3    24 J       
#  4    33 G       
#  5    86 E       
#  6    27 F

sample_n元のデータフレームからdfもう一度やりたいと思います。ただし、この時間nは、sub_dfデータフレーム内の各カテゴリの数によって異なります。

sub_df %>% count(category)
#  A tibble: 5 x 2
#   category     n
#   <fct>    <int>
# 1 E            1
# 2 F            1
# 3 G            2
# 4 I            1
# 5 J            1

表されていない各グループについてsub_dfdf上記のように3つをサンプリングしたいと思います。ただし、に含まれているカテゴリについては、結果のデータフレームをと組み合わせた場合に、すべてのカテゴリで合計3つのサンプルを取得するために時間をsub_dfサンプリングしたいと思います。したがって、この例では、E、F、I、Jはすべて2つのサンプルを持ち、Gは1つだけ必要です。3-nsub_df

各カテゴリをループして、の各カテゴリの数に基づいてサンプルを作成できると思いますsub_dfただし、カテゴリの数が非常に多くなると、このループにはかなりの時間がかかる可能性があります。私はこれを行うためのよりきちんとした方法があるかもしれないと思っていました。

結果のカウントは次のようになります。

result_df %>% count(category)
#  A tibble: 10 x 2
#    category     n
#    <fct>    <int>
#  1 A            3
#  2 B            3
#  3 C            3
#  4 D            3
#  5 E            2
#  6 F            2
#  7 G            1
#  8 H            3
#  9 I            2
# 10 J            2
www

dplyrを使用たソリューションpurrrアイデアは、最初df_s2に各カテゴリの新しいサンプル数を示すデータフレーム作成し、カテゴリごとに分割dfて、との数に関数をdf_list適用するsample_nことです。df_listdf_s2

library(dplyr)
set.seed(123)
df <- data.frame(ID = 1:100, category = sample(LETTERS[1:10], 100, replace = T))
sub_df <- df %>% group_by(category) %>% sample_n(3) %>% ungroup() %>% sample_n(6)

library(purrr)

# Create a table to store the sample number, default to 3
df_s <- data_frame(category = unique(df$category),
                   Number = 3)

# Minus the count number in sub_df
df_s2 <- df_s %>%
  left_join(sub_df %>% count(category), by = "category") %>%
  mutate(n = ifelse(is.na(n), 0, n)) %>%
  mutate(Number = Number - n) %>%
  select(-n) %>%
  arrange(category)

# Split the df by category
df_list <- split(df, f = df$category)

# Apply the sample function on df_list based on df_s2
result_df <- map2_dfr(df_list, df_s2$Number, ~sample_n(.x, .y))

# Check the count number of result_df
result_df %>% count(category)
# # A tibble: 10 x 2
#    category     n
#    <fct>    <int>
#  1 A            3
#  2 B            3
#  3 C            3
#  4 D            3
#  5 E            2
#  6 F            2
#  7 G            1
#  8 H            3
#  9 I            2
# 10 J            2

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

関係に基づいてカテゴリを割り当てる

分類Dev

Angular:さまざまなカテゴリに基づいて表示

分類Dev

Woocommerceの商品タグに基づいて商品をカテゴリに自動的に割り当てます

分類Dev

製品カテゴリに基づいてWooCommerceクーポンコードを自動的に追加します

分類Dev

Excelの非累積カテゴリ列に基づいて累積全体合計を動的に作成する方法

分類Dev

商品カテゴリに基づいてWooCommerce商品配送クラスを自動設定

分類Dev

promiseを使用して親カテゴリIDに基づいて子カテゴリを取得する

分類Dev

Woocommerceの商品カテゴリに基づいて配送方法を非表示にする

分類Dev

Excelのカテゴリに基づいて列を複数に分割する

分類Dev

WordPressのカテゴリに基づいてテキストを表示する

分類Dev

カテゴリに基づいて投稿をフィルタリングする

分類Dev

条件に基づいて複数のカテゴリを割り当てる方法

分類Dev

Laravelのカテゴリに基づいて食品を表示したい

分類Dev

IDとカテゴリに基づいてgroupby列を作成する

分類Dev

数値変数に基づいてカテゴリ変数を作成する方法

分類Dev

引数の値カテゴリに基づいて関数を呼び出す

分類Dev

表のカテゴリ値に基づいて製品を表示する| Ruby On Rails

分類Dev

文字列値に基づいてカテゴリ列を作成する

分類Dev

Linq年とカテゴリに基づいて製品数を選択します

分類Dev

Rの範囲に基づいてカテゴリを作成します

分類Dev

IDに基づいてカテゴリ名を選択する方法

分類Dev

PythonJSON-「カテゴリ」に基づいて結果の数を取得します

分類Dev

Jqueryのカテゴリに基づいてタグを変更する

分類Dev

他のカテゴリ値に基づいて因子の列を追加する

分類Dev

カテゴリ値に基づいて関数を更新するpython

分類Dev

カテゴリに基づいて配列を並べ替える方法は?

分類Dev

カテゴリに基づいて製品を並べ替える方法

分類Dev

数量/カテゴリに基づいてWooCommerceミニカートにカスタム画像を追加する

分類Dev

Woocommerceの商品カテゴリに基づいてカートに追加された最大アイテム数量

Related 関連記事

  1. 1

    関係に基づいてカテゴリを割り当てる

  2. 2

    Angular:さまざまなカテゴリに基づいて表示

  3. 3

    Woocommerceの商品タグに基づいて商品をカテゴリに自動的に割り当てます

  4. 4

    製品カテゴリに基づいてWooCommerceクーポンコードを自動的に追加します

  5. 5

    Excelの非累積カテゴリ列に基づいて累積全体合計を動的に作成する方法

  6. 6

    商品カテゴリに基づいてWooCommerce商品配送クラスを自動設定

  7. 7

    promiseを使用して親カテゴリIDに基づいて子カテゴリを取得する

  8. 8

    Woocommerceの商品カテゴリに基づいて配送方法を非表示にする

  9. 9

    Excelのカテゴリに基づいて列を複数に分割する

  10. 10

    WordPressのカテゴリに基づいてテキストを表示する

  11. 11

    カテゴリに基づいて投稿をフィルタリングする

  12. 12

    条件に基づいて複数のカテゴリを割り当てる方法

  13. 13

    Laravelのカテゴリに基づいて食品を表示したい

  14. 14

    IDとカテゴリに基づいてgroupby列を作成する

  15. 15

    数値変数に基づいてカテゴリ変数を作成する方法

  16. 16

    引数の値カテゴリに基づいて関数を呼び出す

  17. 17

    表のカテゴリ値に基づいて製品を表示する| Ruby On Rails

  18. 18

    文字列値に基づいてカテゴリ列を作成する

  19. 19

    Linq年とカテゴリに基づいて製品数を選択します

  20. 20

    Rの範囲に基づいてカテゴリを作成します

  21. 21

    IDに基づいてカテゴリ名を選択する方法

  22. 22

    PythonJSON-「カテゴリ」に基づいて結果の数を取得します

  23. 23

    Jqueryのカテゴリに基づいてタグを変更する

  24. 24

    他のカテゴリ値に基づいて因子の列を追加する

  25. 25

    カテゴリ値に基づいて関数を更新するpython

  26. 26

    カテゴリに基づいて配列を並べ替える方法は?

  27. 27

    カテゴリに基づいて製品を並べ替える方法

  28. 28

    数量/カテゴリに基づいてWooCommerceミニカートにカスタム画像を追加する

  29. 29

    Woocommerceの商品カテゴリに基づいてカートに追加された最大アイテム数量

ホットタグ

アーカイブ