同じ列名で値が異なるリスト内の複数のデータフレームに列を追加します

ジシカ

1つのリストにn個のデータフレームがあり、新しい列に異なる値と同じ名前を入力したいと思います。これが私の同じことの試みです。

# here for example I have 5 data frames in the list called list.s
df1<- (data.frame(x=c(1.3,2.5,3.3,2.4,1.9),y=c( 9,11, 4,5,15), z=c(0.01,0.04,0.1,0.002,0.4)))
df2<- (data.frame(x=c(1.33,2.25,2.3,0.4,1.19),y=c( 2,22, 14,8,15), z=c(0.21,0.3,0.11,0.002,0.8)))
df3<- (data.frame(x=c(2.4,2.6,3.7,0.1,1.15),y=c( 10,11, 12,5,11), z=c(0.11,0.04,0.08,0.002,0.03)))
df4<- (data.frame(x=c(0.12,0.04,2.02,3.01,5.1),y=c( 5,11, 22,5,13), z=c(1.01,0.04,0.012,0.002,0.4)))
df5<- (data.frame(x=c(2.4,4.1,3.04,2.06,0.9),y=c( 6,21, 12,10,8), z=c(0.01,0.04,0.1,0.02,0.154)))
 list.s<- list(df1=df1,df2=df2,df3=df3,df4=df4,df5=df5)

# the names of the column which I want to add and fill 
 a<-paste0(c("a0","a1","a2","a3","a4","a5"),  rep(1:5,each=6)) 

 list.s[["df1"]]$a01<- 1
 list.s[["df1"]]$a11<- list.s[["df1"]]$x * list.s[["df1"]]$y
 list.s[["df1"]]$a21<- list.s[["df1"]]$z^2
 list.s[["df1"]]$a31<- list.s[["df1"]]$x^2
 list.s[["df1"]]$a41<- list.s[["df1"]]$y -list.s[["df1"]]$z 
 list.s[["df1"]]$a51<- list.s[["df1"]]$y +list.s[["df1"]]$x+list.s[["df1"]]$z
 list.s[["df1"]][, a[7:30]]<-0

 # now I want to add columns to the df2 
 list.s[["df2"]][,a[1:6]]<-0
 list.s[["df2"]]$a02<- 1
 list.s[["df2"]]$a12<- list.s[["df2"]]$x * list.s[["df2"]]$y
 list.s[["df2"]]$a22<- list.s[["df2"]]$z^2
 list.s[["df2"]]$a32<- list.s[["df2"]]$x^2
 list.s[["df2"]]$a42<- list.s[["df2"]]$y -list.s[["df2"]]$z 
 list.s[["df2"]]$a52<- list.s[["df2"]]$y +list.s[["df2"]]$x+list.s[["df2"]]$z
 list.s[["df2"]][, a[13:30]]<-0
  # again do the same and add columns to df3 
 list.s[["df3"]][,a[1:12]]<-0
 list.s[["df3"]]$a03<- 1
 list.s[["df3"]]$a13<- list.s[["df3"]]$x * list.s[["df3"]]$y
 list.s[["df3"]]$a23<- list.s[["df3"]]$z^2
 list.s[["df3"]]$a33<- list.s[["df3"]]$x^2
 list.s[["df3"]]$a43<- list.s[["df3"]]$y -list.s[["df3"]]$z 
 list.s[["df3"]]$a53<- list.s[["df3"]]$y +list.s[["df3"]]$x+list.s[["df3"]]$z
 list.s[["df3"]][, a[19:30]]<-0

 # again the same for df4
 list.s[["df4"]][,a[1:18]]<-0
 list.s[["df4"]]$a04<- 1
 list.s[["df4"]]$a14<- list.s[["df4"]]$x * list.s[["df4"]]$y
 list.s[["df4"]]$a24<- list.s[["df4"]]$z^2
 list.s[["df4"]]$a34<- list.s[["df4"]]$x^2
 list.s[["df4"]]$a44<- list.s[["df4"]]$y -list.s[["df4"]]$z 
 list.s[["df4"]]$a54<- list.s[["df4"]]$y +list.s[["df4"]]$x+list.s[["df4"]]$z
 list.s[["df4"]][, a[25:30]]<-0

 # and finally do the same for the df5
 list.s[["df5"]][,a[1:24]]<-0
 list.s[["df5"]]$a05<- 1
 list.s[["df5"]]$a15<- list.s[["df5"]]$x * list.s[["df5"]]$y
 list.s[["df5"]]$a25<- list.s[["df5"]]$z^2
 list.s[["df5"]]$a35<- list.s[["df5"]]$x^2
 list.s[["df5"]]$a45<- list.s[["df5"]]$y -list.s[["df5"]]$z 
 list.s[["df5"]]$a55<- list.s[["df5"]]$y +list.s[["df5"]]$x+list.s[["df5"]]$z

それらを別々に繰り返して入力する代わりに、1つのコードでこれを行うことはできますか?この点で何か助けはありますか?

akrun

我々は使用することができますmap2をループにlistし、split名前と式に基づいて列を割り当てます

library(dplyr)
library(purrr)
map2(list.s, split(a, substring(a, nchar(a))), ~
     .x %>%
       mutate(!! .y[1] := 1, !!.y[2] := x * y,  !!.y[3] := z^2,
            !! .y[4] := x^2, !!.y[5] := y - z, !!.y[6] := y + x + z))

これに変更map2するmap2_dfrと、存在しない残りの列に入力しながら単一のデータセットが作成されます。NA


別のオプションはから使用することMapですbase R

lst1 <- split(a, substring(a, nchar(a)))
i1 <- cumsum(lengths(lst1)) + 1
list.sModified <-  Map(function(dat, nm, ind) {

           dat[nm] <- cbind(1, dat$x * dat$y,
              dat$z^2, dat$x^2, dat$y - dat$z, dat$y + dat$x + dat$z)
           print(a[min(ind, length(a)):length(a)])
           dat[a[min(ind, length(a)):length(a)]] <- 0
           dat   

        }, 

         list.s, lst1, i1 )

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

リスト内の複数のデータフレームで選択した列名に列値プレフィックスを追加する

分類Dev

エイリアスSparkScalaを使用して、同じデータフレーム内の異なる列で複数の集計を実行します

分類Dev

リストの列を同じPySparkデータフレーム内の複数の列に分割します

分類Dev

複数の列に同じ値があり、別の値が異なるデータフレームから行を選択します

分類Dev

データフレームのリスト内の同じ列から重複するすべての値を検索してNULLに変換します

分類Dev

Rで、同じデータフレーム内の複数の列に列の値を適用する方法

分類Dev

長さが異なる2つのデータフレームを行ごとに比較し、各行に同じ値の列を追加します

分類Dev

パンダ:列の値に基づいて2つのデータフレームをマージします。同じ列値を含む複数の行の場合、それらを異なる列に追加します

分類Dev

列内の辞書のリストを同じデータフレーム内の複数の列に変換します

分類Dev

列名は同じでサフィックスが異なるデータフレームを連結します

分類Dev

データフレームで、リストを持つ列(すべての行で同じ長さ)を同じ行の異なる列に分解する方法

分類Dev

データフレーム列内の数値を同じ比率にスケーリングする

分類Dev

複数の列を条件とし、列の値に応じて条件が異なるデータフレームのフィルタリング

分類Dev

1つのデータフレーム内の複数の.csvおよびcbindから同じ列(異なる長さ)を抽出します-R

分類Dev

Rの複数のデータフレームの列名に異なるサフィックスを追加します

分類Dev

lapplyを使用して、列名が異なるデータフレームのリストの列名を変更する

分類Dev

列が同じで順序が異なる2つのデータフレームを追加する

分類Dev

異なるデータフレームの同じ列から5の間の共通の値を取得します

分類Dev

異なる次元のパンダでデータフレームを乗算する:列の数は同じですが、行の数は異なります

分類Dev

パーティションの数は同じで列の数が異なる2つのデータフレーム(dask)を連結します

分類Dev

同じ構造の複数のExcelファイルの異なる列とシートのセル値を単一のデータフレームに転送します

分類Dev

データフレームに同じ列名の列を追加する方法

分類Dev

複数の同じ長さの時系列データフレームを1つの列に追加します

分類Dev

Rのリスト内の複数のデータフレームに列を追加する

分類Dev

データフレーム内の文字列から数値を抽出し、同じデータフレームの新しい列にこれらの数値の倍数を追加するにはどうすればよいですか。

分類Dev

Rの同じ2つの列に異なる値を持つデータフレームをどのようにサブセット化しますか

分類Dev

パンダデータフレーム:同じ列値を共有する複数の行を1つの行にシフト/マージします

分類Dev

pandas-値が同じである2つのデータフレームを一緒に追加します

分類Dev

同じ値のペアを持つが、2つのデータフレームで異なる順序で表示される2つの列に基づいてパンダのデータフレームをマージします

Related 関連記事

  1. 1

    リスト内の複数のデータフレームで選択した列名に列値プレフィックスを追加する

  2. 2

    エイリアスSparkScalaを使用して、同じデータフレーム内の異なる列で複数の集計を実行します

  3. 3

    リストの列を同じPySparkデータフレーム内の複数の列に分割します

  4. 4

    複数の列に同じ値があり、別の値が異なるデータフレームから行を選択します

  5. 5

    データフレームのリスト内の同じ列から重複するすべての値を検索してNULLに変換します

  6. 6

    Rで、同じデータフレーム内の複数の列に列の値を適用する方法

  7. 7

    長さが異なる2つのデータフレームを行ごとに比較し、各行に同じ値の列を追加します

  8. 8

    パンダ:列の値に基づいて2つのデータフレームをマージします。同じ列値を含む複数の行の場合、それらを異なる列に追加します

  9. 9

    列内の辞書のリストを同じデータフレーム内の複数の列に変換します

  10. 10

    列名は同じでサフィックスが異なるデータフレームを連結します

  11. 11

    データフレームで、リストを持つ列(すべての行で同じ長さ)を同じ行の異なる列に分解する方法

  12. 12

    データフレーム列内の数値を同じ比率にスケーリングする

  13. 13

    複数の列を条件とし、列の値に応じて条件が異なるデータフレームのフィルタリング

  14. 14

    1つのデータフレーム内の複数の.csvおよびcbindから同じ列(異なる長さ)を抽出します-R

  15. 15

    Rの複数のデータフレームの列名に異なるサフィックスを追加します

  16. 16

    lapplyを使用して、列名が異なるデータフレームのリストの列名を変更する

  17. 17

    列が同じで順序が異なる2つのデータフレームを追加する

  18. 18

    異なるデータフレームの同じ列から5の間の共通の値を取得します

  19. 19

    異なる次元のパンダでデータフレームを乗算する:列の数は同じですが、行の数は異なります

  20. 20

    パーティションの数は同じで列の数が異なる2つのデータフレーム(dask)を連結します

  21. 21

    同じ構造の複数のExcelファイルの異なる列とシートのセル値を単一のデータフレームに転送します

  22. 22

    データフレームに同じ列名の列を追加する方法

  23. 23

    複数の同じ長さの時系列データフレームを1つの列に追加します

  24. 24

    Rのリスト内の複数のデータフレームに列を追加する

  25. 25

    データフレーム内の文字列から数値を抽出し、同じデータフレームの新しい列にこれらの数値の倍数を追加するにはどうすればよいですか。

  26. 26

    Rの同じ2つの列に異なる値を持つデータフレームをどのようにサブセット化しますか

  27. 27

    パンダデータフレーム:同じ列値を共有する複数の行を1つの行にシフト/マージします

  28. 28

    pandas-値が同じである2つのデータフレームを一緒に追加します

  29. 29

    同じ値のペアを持つが、2つのデータフレームで異なる順序で表示される2つの列に基づいてパンダのデータフレームをマージします

ホットタグ

アーカイブ