列の特定の組み合わせを変更する関数を適用するにはどうすればよいですか?(purrr ::優先使用)

クリスチャン

次のデータがあるとします。

data = tibble::tribble(
~id,  ~year_1, ~year_2, ~cod_1, ~cod_2, ~cod_3, ~cod_4, ~var_x,
  1,     0,      1,      5,      5,      3,      6,     "x",
  1,     0,      1,      3,      6,      14,     5,     "x",
  1,     0,      1,      2,      8,      5,      4,     "x",
  2,     1,      0,      10,     8,      2,      3,     "x",
  2,     1,      0,      3,      9,      1,      2,     "x",
  2,     1,      0,      1,      12,     0,      1,     "x"
)

すべての列「year_」とすべての列「cod_」の組み合わせで可能なすべての製品を作成したいと思います。私はこのようなことを意味します:

data.new = data %>% 
  mutate(year_1_cod_1 = year_1 * cod_1) %>% 
  mutate(year_1_cod_2 = year_1 * cod_2) %>% 
  mutate(year_1_cod_3 = year_1 * cod_3) %>% 
  mutate(year_1_cod_4 = year_1 * cod_4) %>% 
  mutate(year_2_cod_1 = year_2 * cod_1) %>% 
  mutate(year_2_cod_2 = year_2 * cod_2) %>% 
  mutate(year_2_cod_3 = year_2 * cod_3) %>% 
  mutate(year_2_cod_4 = year_2 * cod_4)

私は以下を使用してすべての可能な組み合わせを得ることができます:

year.var = colnames(data[, grepl("year", names(data))])
cod.var = colnames(data[, grepl("cod", names(data))])
com = crossing(year.var, cod.var)
> com
# A tibble: 8 x 2
  year.var cod.var
  <chr>    <chr>  
1 year_1   cod_1  
2 year_1   cod_2  
3 year_1   cod_3  
4 year_1   cod_4  
5 year_2   cod_1  
6 year_2   cod_2  
7 year_2   cod_3  
8 year_2   cod_4  

forループを使用して、comデータフレーム上を移動し、新しい各列を作成できます。しかし、私はこれをdplyr::環境内で行いたいと思います。私は私が使用することができると思うpurrr::mutateすべての組み合わせの上に、私はどのように確認していません。

実際、私の実際のデータでは、1,000を超える可能な組み合わせ(つまり、変更する変数が1,000を超える)があります。

ロナックシャー

を使用map2して、の組み合わせをループし、非標準の評価を使用してそれらの列を乗算し、最後に元のデータフレームにバインドすることにより、新しい列を作成するためにcom使用transmuteできます。

library(dplyr)
library(purrr)

data %>%
  bind_cols(map2_dfc(com$year.var, com$cod.var, 
       ~data %>% transmute(!!paste(.x, .y, sep = "_") := !!sym(.x) * !!sym(.y))))

# A tibble: 6 x 16
#     id year_1 year_2 cod_1 cod_2 cod_3 cod_4 var_x year_1_cod_1 year_1_cod_2
#  <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <chr>        <dbl>        <dbl>
#1     1      0      1     5     5     3     6 x                0            0
#2     1      0      1     3     6    14     5 x                0            0
#3     1      0      1     2     8     5     4 x                0            0
#4     2      1      0    10     8     2     3 x               10            8
#5     2      1      0     3     9     1     2 x                3            9
#6     2      1      0     1    12     0     1 x                1           12
# … with 6 more variables: year_1_cod_3 <dbl>, year_1_cod_4 <dbl>,
#   year_2_cod_1 <dbl>, year_2_cod_2 <dbl>, year_2_cod_3 <dbl>,
#   year_2_cod_4 <dbl>

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

rand関数とsplit関数を使用して特定の3要素の組み合わせを回避するにはどうすればよいですか?

分類Dev

2つのシリーズを入力として使用し、出力が引数の各組み合わせの関数結果のDataFrameである関数を適用するにはどうすればよいですか?

分類Dev

LAG関数をWHERE句と組み合わせて使用するにはどうすればよいですか?

分類Dev

itertoolsの組み合わせ関数を使用してリストのリストを作成するにはどうすればよいですか?

分類Dev

Juliaを使用して、複数のCSVを読み取り、列を組み合わせるにはどうすればよいですか

分類Dev

T-SQLを使用して、長さが異なる複数の親子関係を組み合わせるにはどうすればよいですか?

分類Dev

purrrを使用して列のペアに関数を適用するにはどうすればよいですか?

分類Dev

Pythonで優先度キューの優先度関数を変更するにはどうすればよいですか?

分類Dev

connect()の2つの使用法を組み合わせるにはどうすればよいですか?

分類Dev

配列の要素間の間隔に一定のステップを設定し、そのような2つの配列を1次および2次の優先順位で組み合わせるにはどうすればよいですか?

分類Dev

特定の列を取得するためにデータフレームで適用関数を使用するにはどうすればよいですか?

分類Dev

bashまたは正規表現を使用して、複数の文字と数字の組み合わせとサイズで複数のファイルの名前を変更するにはどうすればよいですか?

分類Dev

lubridateas_datetime関数をdplyrmutateおよびcase_when関数と組み合わせて使用するにはどうすればよいですか?

分類Dev

Javaで複数の組み合わせのチェックボックスのスイッチを使用するにはどうすればよいですか?

分類Dev

Rのforループの代わりに、配列と行列に適用ファミリ関数を使用するにはどうすればよいですか?

分類Dev

setloclist組み込み関数を使用して「Quickfix」タイトルの名前を変更するにはどうすればよいですか?

分類Dev

setloclist組み込み関数を使用して「Quickfix」タイトルの名前を変更するにはどうすればよいですか?

分類Dev

重複せず、組み込み関数を使用せずに、JAVAの配列をマージするにはどうすればよいですか?

分類Dev

grepを使用してファイルで文字列の組み合わせを検索するにはどうすればよいですか?

分類Dev

C#の組み込み関数Rankを使用せずに配列の次元を取得するにはどうすればよいですか?

分類Dev

Rを使用してデータフレームの特定の列に関数を適用するにはどうすればよいですか?

分類Dev

実行時に制約の優先順位を変更するにはどうすればよいですか

分類Dev

DataFrame(パンダ)のインデックスとして組み合わせまたは文字列を使用するにはどうすればよいですか?

分類Dev

x-www-browserの優先順位を変更するにはどうすればよいですか?

分類Dev

Android:NFCプロトコルの優先度を変更するにはどうすればよいですか?

分類Dev

PulseAudioポートの優先順位を変更するにはどうすればよいですか?

分類Dev

組み込みのObject.keys()メソッドを使用する代わりに関数を作成するにはどうすればよいですか?

分類Dev

iTextSharpを使用して改ページを除く複数のPDFファイルを組み合わせるにはどうすればよいですか?

分類Dev

Rでgrepまたはstringrと組み合わせてwhich関数を使用するにはどうすればよいですか?

Related 関連記事

  1. 1

    rand関数とsplit関数を使用して特定の3要素の組み合わせを回避するにはどうすればよいですか?

  2. 2

    2つのシリーズを入力として使用し、出力が引数の各組み合わせの関数結果のDataFrameである関数を適用するにはどうすればよいですか?

  3. 3

    LAG関数をWHERE句と組み合わせて使用するにはどうすればよいですか?

  4. 4

    itertoolsの組み合わせ関数を使用してリストのリストを作成するにはどうすればよいですか?

  5. 5

    Juliaを使用して、複数のCSVを読み取り、列を組み合わせるにはどうすればよいですか

  6. 6

    T-SQLを使用して、長さが異なる複数の親子関係を組み合わせるにはどうすればよいですか?

  7. 7

    purrrを使用して列のペアに関数を適用するにはどうすればよいですか?

  8. 8

    Pythonで優先度キューの優先度関数を変更するにはどうすればよいですか?

  9. 9

    connect()の2つの使用法を組み合わせるにはどうすればよいですか?

  10. 10

    配列の要素間の間隔に一定のステップを設定し、そのような2つの配列を1次および2次の優先順位で組み合わせるにはどうすればよいですか?

  11. 11

    特定の列を取得するためにデータフレームで適用関数を使用するにはどうすればよいですか?

  12. 12

    bashまたは正規表現を使用して、複数の文字と数字の組み合わせとサイズで複数のファイルの名前を変更するにはどうすればよいですか?

  13. 13

    lubridateas_datetime関数をdplyrmutateおよびcase_when関数と組み合わせて使用するにはどうすればよいですか?

  14. 14

    Javaで複数の組み合わせのチェックボックスのスイッチを使用するにはどうすればよいですか?

  15. 15

    Rのforループの代わりに、配列と行列に適用ファミリ関数を使用するにはどうすればよいですか?

  16. 16

    setloclist組み込み関数を使用して「Quickfix」タイトルの名前を変更するにはどうすればよいですか?

  17. 17

    setloclist組み込み関数を使用して「Quickfix」タイトルの名前を変更するにはどうすればよいですか?

  18. 18

    重複せず、組み込み関数を使用せずに、JAVAの配列をマージするにはどうすればよいですか?

  19. 19

    grepを使用してファイルで文字列の組み合わせを検索するにはどうすればよいですか?

  20. 20

    C#の組み込み関数Rankを使用せずに配列の次元を取得するにはどうすればよいですか?

  21. 21

    Rを使用してデータフレームの特定の列に関数を適用するにはどうすればよいですか?

  22. 22

    実行時に制約の優先順位を変更するにはどうすればよいですか

  23. 23

    DataFrame(パンダ)のインデックスとして組み合わせまたは文字列を使用するにはどうすればよいですか?

  24. 24

    x-www-browserの優先順位を変更するにはどうすればよいですか?

  25. 25

    Android:NFCプロトコルの優先度を変更するにはどうすればよいですか?

  26. 26

    PulseAudioポートの優先順位を変更するにはどうすればよいですか?

  27. 27

    組み込みのObject.keys()メソッドを使用する代わりに関数を作成するにはどうすればよいですか?

  28. 28

    iTextSharpを使用して改ページを除く複数のPDFファイルを組み合わせるにはどうすればよいですか?

  29. 29

    Rでgrepまたはstringrと組み合わせてwhich関数を使用するにはどうすればよいですか?

ホットタグ

アーカイブ