文字列をコードとして渡して、data.tableで複数の列を要約します

rafa.pereira

データテーブルを要約して、元のデータの列名と値の組み合わせから生じる多くの新しい変数を作成したいと思います。これは、簡潔にするために2つの列で達成したい結果を示す再現可能な例です。

library(data.table)
data('mtcars')
setDT(mtcars)

# Desired output
mtcars[, .(
           acm_hp_carb2 = mean(hp[which( carb <= 2)], na.rm=T),
           acm_wt_am1 = mean(wt[which( am== 1)], na.rm=T)
  ), by= .(cyl, gear)]

多くの列を要約する必要があるため、各要約変数の作成に使用するすべての文字列を返す関数を作成しました。この例では、次のようになります。

a <- 'acm_hp_carb2 = mean(hp[which( carb <= 2)], na.rm=T)'
b <- 'acm_wt_am1 = mean(wt[which( am== 1)], na.rm=T)'

そして、これが私たちの失敗した試みです。作成された新しい列には、割り当てたい名前が付けられていないことに注意してください。

mtcars[, .(  
           eval(parse(text=a)),
           eval(parse(text=b))

          ), by= .(cyl, gear)]
IceCreamToucan

動作していない部分は列名だけのようです。abをベクトルに入れて名前を追加すると、を使用lapplyeval(parseてベクトルから名前を保持できます正規表現を使用して名前を取得しましたが、おそらく実際のコードでは、最初に文字列を作成するために使用している変数として名前を割り当てることができます。

結果には多くのNaNがありますが、目的の出力と一致します。

to_make <- c(a, b)
to_make <- setNames(to_make, sub('^(.*) =.*', '\\1', to_make))

mtcars2[, lapply(to_make, function(x) eval(parse(text = x)))
          , by= .(cyl, gear)]

#    cyl gear acm_hp_carb2 acm_wt_am1
# 1:   6    4          NaN   2.747500
# 2:   4    4         76.0   2.114167
# 3:   6    3        107.5        NaN
# 4:   8    3        162.5        NaN
# 5:   4    3         97.0        NaN
# 6:   4    5        102.0   1.826500
# 7:   8    5          NaN   3.370000
# 8:   6    5          NaN   2.770000

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

複数の列を別の列の値で要約します

分類Dev

dplyrで複数の列を要約しますか?

分類Dev

複数の変数をdplyrの文字列に要約します

分類Dev

R:複数の列(数値、文字)を要約し、NAを削除します

分類Dev

pythonpandasデータフレームで複数の列を使用して要約します

分類Dev

クスト| count()の複数の列をwhere句で要約します

分類Dev

R、グループ化された列を文字列として渡して、関数の引数を要約します

分類Dev

文字列のベクトルとして格納された変数を「by」グループ化するときにdata.tableを要約します

分類Dev

r複数の要素を使用して要約するdata.table

分類Dev

data.tablerの複数の列の要約変数を作成します。

分類Dev

列名を文字列としてgroup_byに渡し、要約します

分類Dev

Dplyrは、条件に基づいて複数の列を要約します

分類Dev

tidyverseは複数の列を要約しますが、結果は行として表示します

分類Dev

data.tableを使用してさまざまな関数で列を要約します

分類Dev

jqreduceを使用して複数の値を要約します

分類Dev

複数の論理列を要約せずに文字列に統合する方法で、dplyrを使用して変更します

分類Dev

(R、dplyr)同じ文字列で始まる複数の列を選択し、グループごとに平均(90%CI)を要約します

分類Dev

配列を使用し、vbaで以下のコードを使用して複数の文字列を検索しますか?

分類Dev

xargs引数を文字列として '>'を使用して別のコマンドに渡しますか?

分類Dev

Rで複数の列を集約して、新しい列を作成します

分類Dev

Rで複数の列を集約して、新しい列を作成します

分類Dev

dplyrを使用して別の(グループ化された)列を条件として、複数の列にまたがって要約する方法は?

分類Dev

dplyrcross()で複数の関数を使用して要約する

分類Dev

JSON文字列をawsコマンドへの入力として渡します

分類Dev

複数の列情報を使用して要約変数を作成する方法

分類Dev

複数の変数でグループ化し、dplyrを要約します

分類Dev

パンダは複数の列の要約DataFrameを計算します

分類Dev

r data.table-文字列を使用して、n列から要約された列を作成します

分類Dev

SELECTから返された複数の行を取得して、特定の列で正しく要約することができません

Related 関連記事

  1. 1

    複数の列を別の列の値で要約します

  2. 2

    dplyrで複数の列を要約しますか?

  3. 3

    複数の変数をdplyrの文字列に要約します

  4. 4

    R:複数の列(数値、文字)を要約し、NAを削除します

  5. 5

    pythonpandasデータフレームで複数の列を使用して要約します

  6. 6

    クスト| count()の複数の列をwhere句で要約します

  7. 7

    R、グループ化された列を文字列として渡して、関数の引数を要約します

  8. 8

    文字列のベクトルとして格納された変数を「by」グループ化するときにdata.tableを要約します

  9. 9

    r複数の要素を使用して要約するdata.table

  10. 10

    data.tablerの複数の列の要約変数を作成します。

  11. 11

    列名を文字列としてgroup_byに渡し、要約します

  12. 12

    Dplyrは、条件に基づいて複数の列を要約します

  13. 13

    tidyverseは複数の列を要約しますが、結果は行として表示します

  14. 14

    data.tableを使用してさまざまな関数で列を要約します

  15. 15

    jqreduceを使用して複数の値を要約します

  16. 16

    複数の論理列を要約せずに文字列に統合する方法で、dplyrを使用して変更します

  17. 17

    (R、dplyr)同じ文字列で始まる複数の列を選択し、グループごとに平均(90%CI)を要約します

  18. 18

    配列を使用し、vbaで以下のコードを使用して複数の文字列を検索しますか?

  19. 19

    xargs引数を文字列として '>'を使用して別のコマンドに渡しますか?

  20. 20

    Rで複数の列を集約して、新しい列を作成します

  21. 21

    Rで複数の列を集約して、新しい列を作成します

  22. 22

    dplyrを使用して別の(グループ化された)列を条件として、複数の列にまたがって要約する方法は?

  23. 23

    dplyrcross()で複数の関数を使用して要約する

  24. 24

    JSON文字列をawsコマンドへの入力として渡します

  25. 25

    複数の列情報を使用して要約変数を作成する方法

  26. 26

    複数の変数でグループ化し、dplyrを要約します

  27. 27

    パンダは複数の列の要約DataFrameを計算します

  28. 28

    r data.table-文字列を使用して、n列から要約された列を作成します

  29. 29

    SELECTから返された複数の行を取得して、特定の列で正しく要約することができません

ホットタグ

アーカイブ