RでのCSVファイルの操作

関数read.csvを使ってCSVファイルを読む

df = read.csv(...)

引数

以下は1行目がコメント、2行目がCSV形式のヘッダー、3行目以降がCSV形式のデータになっている。

# sat-benchmark 0.8.17 on smithi @ 2016-12-15T20:17:17+09:00
solver, num, target, time
"mios-f69b8b8 0.4-2C2L@12-15", 1, "SR2015subset1/38bits_10.dimacs.cnf",  4.12
"mios-f69b8b8 0.4-2C2L@12-15", 2, "SR2015subset1/40bits_10.dimacs.cnf",  1256.82
...

このファイルの名前がresult.csvならば、以下によりデータをデータフレーム型変数dfに代入できる。

df = read.csv("result.csv", header=T, comment="#")

1. 行や列を指定して部分データを取り出す

  1. まず対象行(列)を取り出す(指定する)方法を見ます。対象は1行ではなく複数行の場合もあります。
  2. 次に対象行や対象列の要素全てに対する計算のやり方を考えます。
  3. 次にその結果をある行(列)または新規な行(列)に代入する方法を考えます。
  4. 最後に条件を使った計算式についてループにより処理する方法を見ます。

1.1 行添字、列添字による部分データの取り出し

データフレームの一部を取り出すには、[, 列指定添字][行指定添字, ] を用いる。返ってくるものはスカラー値またはデータフレーム型になる。 添字はスカラー値でもよいし、ベクターでもよい。

df[, 1]
df[, 1:2]
df[2, ]
df[1:4, ]

1.2 列名による取り出し

ヘッダーを持つデータフレームの列は [列名] でindexingできます。列名は文字列型。従って文字列型の変数も使える。

df = ... # データフレーム変数

df["target"]

# または
c = "target"
df[c]

1.3 条件式による行の取り出し

d1 = subset(df, p1==1)

2. 対象行(列)の要素全てに対する計算

多くの演算はスカラーだけでなくベクターを引数に取ることができるため、通常の計算式がそのまま使えることが多い。

df = ... # データフレーム型変数

df[1] + df[2]    # 1行目と2行目の要素それぞれを加算