LoginSignup
2
1

More than 5 years have passed since last update.

一連のデータフレームをまとめて加工

Last updated at Posted at 2017-06-20

先日教えてもらったのでメモ。

サンプルとやりたいこと

以下のように,Global Environmentに連番で形が同じデータフレームが存在するとします:

data_list <- paste("data", 1:3, sep = "")
for(i in 1:length(data_list)) {
  assign(
    data_list[i],
    data.frame(
      x1 = rnorm(10),
      x2 = rnorm(10)
    )
  )
}

これで,data1からdata3までのデータフレームが作られます。ここで,これらのデータフレームに対して,同じような処理(例えば,x3 = x1 + x2のような変数を新たに作成させる)をしたいんです。

でも今回の場合,リストに束ねられているのではなく,それぞれのデータベースがその環境にある状況で,悩んでました。

やり方その1

自分で思いついたのが,get()でデータフレームを呼び出し,それをforで回すというやり方でした:

library(dplyr)
for(i in 1: length(data_list)) {
  get(data_list[i]) %>%
    mutate(x3 = x1 + x2)
}

確かにこれでやりたいことはできましたが,どうもforを回すのに抵抗が出てしまう…

やり方その2

こちらが教えてもらったやり方:

library(dplyr)
l <- lapply(data_list, get, envir = globalenv())
l <- lapply(l, mutate, x3 = x1 + x2)

getlapplyを使って一気に取得する,なるほどでした。ありがとうございました。

Enjoy!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1