データフレームのリストにdcast()関数を適用します

フェラマン

以下にその一部を示すデータフレームのリストがあります。

> str(ls.df.val.keep)

List of 87
 $ AT_VALUES_IMV_EU28_EXTRA  :'data.frame': 1554 obs. of  4 variables:
  ..$ PARTNER        : Factor w/ 3 levels "EU28_EXTRA","EU28_INTRA",..: 1 1 1 1 1 1 1 1 1 1 ...
  ..$ PRODUCT        : int [1:1554] 2207 2207 2207 2207 2207 2207 2207 2207 2207 2207 ...
  ..$ PERIOD         : Date[1:1554], format: "2010-01-01" "2010-02-01" "2010-03-01" "2010-04-01" ...
  ..$ INDICATOR_VALUE: num [1:1554] 1033828 291810 227820 104650 254214 ...
 $ AT_VALUES_IMV_EU28_INTRA  :'data.frame': 4380 obs. of  4 variables:
  ..$ PARTNER        : Factor w/ 3 levels "EU28_EXTRA","EU28_INTRA",..: 2 2 2 2 2 2 2 2 2 2 ...
  ..$ PRODUCT        : int [1:4380] 2207 2207 2207 2207 2207 2207 2207 2207 2207 2207 ...
  ..$ PERIOD         : Date[1:4380], format: "2010-01-01" "2010-02-01" "2010-03-01" "2010-04-01" ...
  ..$ INDICATOR_VALUE: num [1:4380] 1894626 2177029 1271173 994368 1746904 ...
 $ AT_VALUES_IMV_IN          :'data.frame': 6 obs. of  4 variables:
  ..$ PARTNER        : Factor w/ 3 levels "EU28_EXTRA","EU28_INTRA",..: 3 3 3 3 3 3
  ..$ PRODUCT        : int [1:6] 2208 2208 220890 220890 22089069 22089069
  ..$ PERIOD         : Date[1:6], format: "2010-09-01" "2012-07-01" "2010-09-01" "2012-07-01" ...
  ..$ INDICATOR_VALUE: num [1:6] 58 37 58 37 58 37
.
.
.
.

このリストの87個のデータフレームの要素にカスタム関数dcast()を使用したいと思います。望ましい結果は、データフレームの列数に応じて、データフレームごとに次のようになります。

   22082027 22082029 22082040 22082062 22082086 22082089 22083011 22083019 22083030 22083041 22083061 22083069 22083071 22083082 22084011
1        NA       NA       NA       NA       NA       NA   400675       NA     3103       NA      186       NA       NA       NA    22297
2        NA     2594       NA       NA       NA       NA   667309     3011       NA       NA       NA       NA       NA     1916       NA
3        NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA       NA      263    93482
4        NA       NA       NA       NA       NA       NA   503155     4516       NA       NA       NA       NA       NA     5359       NA
5        NA      175       NA       NA       NA       NA   226936     4514       NA       NA       NA       NA    39389       NA       NA

私はさまざまな解決策とコードの断片を試しましたが、機能していません:

## First solution
all.cast <- list()
for (i in 1:length(ls.df.val.keep)) {
  all.cast[[i]] <- dcast(ls.df.val.keep[[i]], PERIOD ~ PRODUCT, value.var = "INDICATOR_VALUE")
}
ls.df.val.dcas <- list()
ls.df.val.dcas <- lapply(names(ls.df.val.keep), myfunc)

エラーが発生します:

Error: value.var (INDICATOR_VALUE) not found in input
Called from: cast(data, formula, fun.aggregate, ..., subset = subset, fill = fill, 
    drop = drop, value.var = value.var)

2番目の解決策

ls.df.val.dcas < - lapply(ls.df.val.keep, function(x) dcast(x, PERIOD ~ PRODUCT, value.var="INDICATOR_VALUE"))

エラーは次のとおりです。

Error in dim(ordered) <- ns : 
  dims [product 1] do not match the length of object [0]

3番目の解決策

llply(ls.df.val.keep, .fun=function(x) dcast(x, PERIOD ~ PRODUCT, value.var="INDICATOR_VALUE"))

エラーは次のとおりです。

Error in do.ply(i) : 
  task 9 failed - "dims [product 1] do not match the length of object [0]"
In addition: Warning message:
In setup_parallel() : No parallel backend registered

4番目の解決策(絶望的なもの)

all.cast <- list()
for (i in 1:length(ls.df.val.keep)) {
  all.cast[[i]] <- dcast(ls.df.val.keep[[i]], PERIOD ~ PRODUCT, value.var = "INDICATOR_VALUE")
}

再びエラーが発生します:

Error in dim(ordered) <- ns : 
  dims [product 1] do not match the length of object [0]

不思議なことに、各データフレームの名前、またはリストの要素(ls.df.val.keep [[3]]など)だけを入力すると、機能します。lapplyを使用してこのリストに対してやりたいことが他にもたくさんありますが、最初のステップで立ち往生しています。見えないものはありますか?

編集済み。

@Jakeが要求したように、データフレームデータのサンプルを追加しています。

> head(ls.df.val.keep[[1]])
         PARTNER    PRODUCT     PERIOD             INDICATOR_VALUE
58136 EU28_EXTRA    2207     2010-01-01         1033828
58138 EU28_EXTRA    2207     2010-02-01         291810
58140 EU28_EXTRA    220710   2010-03-01         227820
58142 EU28_EXTRA    220710   2010-04-01         104650
58144 EU28_EXTRA    22071000 2010-09-01         254214
58146 EU28_EXTRA    22071000 2010-10-01         572446

......。

ジェイク・カウプ

エラーをスローしている空のデータフレームのピエールの発見を引き出して、あなたはpurrrあなたの目標を達成するために使うことができます。

library(purrr)
library(dplyr)
library(reshape2)

dcast_list <- map_if(ls.df.val.keep, negate(is_empty), ~dcast(.x, PERIOD ~ PRODUCT, value.var = "INDICATOR_VALUE"))

これにより、データフレームのリストが返され、nullデータフレームはそのまま保持されます。それらを削除したい場合は、マップの前にそれらを除外します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

rのデータフレームのネストされたリストに関数を適用します

分類Dev

データフレームのリストの列に関数を適用し、結果を追加します

分類Dev

ユーザー定義関数をデータフレームのリストに適用します

分類Dev

関数のリストをRの別のデータフレームの行に適用します

分類Dev

ベクトル出力を持つ関数をデータフレームのリストに適用します

分類Dev

データフレームのリストに関数を適用し、結果を書き戻します

分類Dev

データフレームのリストを使用して列名に関数を適用します

分類Dev

optim()を使用して、データフレームのリストに関数を適用します

分類Dev

データフレームのリスト内の対応する要素に関数を適用します

分類Dev

データフレームのリストの特定の列に関数を適用します

分類Dev

リスト内のデータフレームの列にいくつかの関数を適用します

分類Dev

Rのデータフレームのリストに関数を適用します

分類Dev

リスト内の各データフレームの各要素に関数を適用します

分類Dev

Rのデータフレームのリストに自己定義関数を適用します

分類Dev

データフレームの列に関数を適用します(列はリストです)

分類Dev

データフレームの列に関数を適用します(列はリストです)

分類Dev

データフレームのリスト間に関数を適用する

分類Dev

データフレームの各サブセットにカスタム関数を適用し、データフレームを作成します

分類Dev

行列のリストに複数の関数を適用し、データフレームに回答を出力します

分類Dev

複数のリストの各要素に関数を適用します。別の名前のデータフレームを返す

分類Dev

pandasデータフレームに関数を適用して、他の列/セルに応じて列/セルのリストをスキャンします

分類Dev

リスト内のすべてのデータフレームの特定の列に関数を適用してから、列に値を割り当てます

分類Dev

pandasデータフレームの各列に関数を適用します

分類Dev

ループ内の列のリストに関数を適用し、データフレームを出力します

分類Dev

データフレームに関数列のリストを適用する

分類Dev

R:データフレームのリストに関数を適用するときのエラー

分類Dev

データフレームの各行に関数を適用して、名前付きの値でリストを作成します

分類Dev

ループから関数を計算して、データフレームのリストに適用します

分類Dev

Rのデータフレームの2つのリストに関数を適用する

Related 関連記事

  1. 1

    rのデータフレームのネストされたリストに関数を適用します

  2. 2

    データフレームのリストの列に関数を適用し、結果を追加します

  3. 3

    ユーザー定義関数をデータフレームのリストに適用します

  4. 4

    関数のリストをRの別のデータフレームの行に適用します

  5. 5

    ベクトル出力を持つ関数をデータフレームのリストに適用します

  6. 6

    データフレームのリストに関数を適用し、結果を書き戻します

  7. 7

    データフレームのリストを使用して列名に関数を適用します

  8. 8

    optim()を使用して、データフレームのリストに関数を適用します

  9. 9

    データフレームのリスト内の対応する要素に関数を適用します

  10. 10

    データフレームのリストの特定の列に関数を適用します

  11. 11

    リスト内のデータフレームの列にいくつかの関数を適用します

  12. 12

    Rのデータフレームのリストに関数を適用します

  13. 13

    リスト内の各データフレームの各要素に関数を適用します

  14. 14

    Rのデータフレームのリストに自己定義関数を適用します

  15. 15

    データフレームの列に関数を適用します(列はリストです)

  16. 16

    データフレームの列に関数を適用します(列はリストです)

  17. 17

    データフレームのリスト間に関数を適用する

  18. 18

    データフレームの各サブセットにカスタム関数を適用し、データフレームを作成します

  19. 19

    行列のリストに複数の関数を適用し、データフレームに回答を出力します

  20. 20

    複数のリストの各要素に関数を適用します。別の名前のデータフレームを返す

  21. 21

    pandasデータフレームに関数を適用して、他の列/セルに応じて列/セルのリストをスキャンします

  22. 22

    リスト内のすべてのデータフレームの特定の列に関数を適用してから、列に値を割り当てます

  23. 23

    pandasデータフレームの各列に関数を適用します

  24. 24

    ループ内の列のリストに関数を適用し、データフレームを出力します

  25. 25

    データフレームに関数列のリストを適用する

  26. 26

    R:データフレームのリストに関数を適用するときのエラー

  27. 27

    データフレームの各行に関数を適用して、名前付きの値でリストを作成します

  28. 28

    ループから関数を計算して、データフレームのリストに適用します

  29. 29

    Rのデータフレームの2つのリストに関数を適用する

ホットタグ

アーカイブ