差分
この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
memo:r:datamanipulationwithr [2013/05/04 00:08] hasegawa |
memo:r:datamanipulationwithr [2016/07/17 04:22] (現在) |
||
---|---|---|---|
ライン 37: | ライン 37: | ||
format(DATE[1], '%H') #10進法で時間(24時間表示)を表示,Mで分,Sで秒 | format(DATE[1], '%H') #10進法で時間(24時間表示)を表示,Mで分,Sで秒 | ||
- | ==== 日付型データと実数型の関係 ==== | ||
==== 任意の期間および時間の日付型データを生成する ==== | ==== 任意の期間および時間の日付型データを生成する ==== | ||
ライン 68: | ライン 67: | ||
res[i] <- i^2 | res[i] <- i^2 | ||
} | } | ||
+ | res | ||
+ | |||
+ | 2013/07/31追記 | ||
+ | NULLで初期化した方が楽で良いようだ. | ||
+ | res <- NULL | ||
+ | for (i in 1:10){ | ||
+ | res[i] <- i^2 | ||
+ | } | ||
+ | res | ||
====== データフレーム dataframe ====== | ====== データフレーム dataframe ====== | ||
ライン 96: | ライン 104: | ||
all.equal(subset(x = iris, subset = Sepal.Length > 6, select=c("Species")), iris[iris$Sepal.Length > 6, "Species"]) | all.equal(subset(x = iris, subset = Sepal.Length > 6, select=c("Species")), iris[iris$Sepal.Length > 6, "Species"]) | ||
時と場合によって使い分ければ良い | 時と場合によって使い分ければ良い | ||
+ | |||
+ | ===== リストと一致するものを取り出す ===== | ||
+ | # iris$Sepal.Lengthの度数分布 | ||
+ | table(iris$Sepal.Length) | ||
+ | | ||
+ | # iris$Sepal.Lengthが4.3, 4.4, 4.5, 4.6のいずれかに一致する行を抽出 | ||
+ | iris[iris$Sepal.Length %in% c(4.3, 4.4, 4.5, 4.6), ] | ||
+ | |||
+ | 実行結果 | ||
+ | Sepal.Length Sepal.Width Petal.Length Petal.Width Species | ||
+ | 4 4.6 3.1 1.5 0.2 setosa | ||
+ | 7 4.6 3.4 1.4 0.3 setosa | ||
+ | 9 4.4 2.9 1.4 0.2 setosa | ||
+ | 14 4.3 3.0 1.1 0.1 setosa | ||
+ | 23 4.6 3.6 1.0 0.2 setosa | ||
+ | 39 4.4 3.0 1.3 0.2 setosa | ||
+ | 42 4.5 2.3 1.3 0.3 setosa | ||
+ | 43 4.4 3.2 1.3 0.2 setosa | ||
+ | 48 4.6 3.2 1.4 0.2 setosa | ||
+ | |||
+ | # iris$Sepal.Lengthが4.3, 4.4, 4.5, 4.6のいずれかに一致しない行を抽出 | ||
+ | iris[!(iris$Sepal.Length %in% c(4.3, 4.4, 4.5, 4.6)), ] | ||
+ | |||
+ | ===== データフレーム行の並べ替え ===== | ||
+ | iris[order(iris$Sepal.Length), ] # "Sepal.Length"の値で昇順に並べ替え | ||
+ | iris[order(iris$Sepal.Length, decreasing=TRUE), ] # "Sepal.Length"の値で降順に並べ替え | ||
+ | iris[sample(nrow(iris)), ] # ランダムに並べ替え | ||
+ | |||
+ | ===== データフレームの行と列の入れ替え ===== | ||
+ | matrixの場合はt()関数が用意されているが,データフレームにはない(t()関数を適用出来るが,列名が変になることがある).簡単な処理なので関数にするまでもないが,あえて関数にすればこんな感じ. | ||
+ | # データフレーム df の行と列を入れ替える関数 | ||
+ | TransposeDf <- function(df){ | ||
+ | # データフレームを転置 | ||
+ | tdf <- data.frame(t(df)) | ||
+ | # 行名と列名を付けなおす | ||
+ | rownames(tdf) <- colnames(df) | ||
+ | colnames(tdf) <- rownames(df) | ||
+ | return(tdf) | ||
+ | } | ||
+ | | ||
+ | # 実行例 | ||
+ | TransposeDf(df = iris) | ||
+ | |||
====== 行列 matirix ====== | ====== 行列 matirix ====== | ||
ライン 124: | ライン 175: | ||
) | ) | ||
元々のデータフレームに"ID_unit","Prob","Stratum"列が追加され,"Stratum"が分割されたデータの属する層(この場合Species)を数字で表す.よって,SpeciesとStratumはサンプル毎に対応が取れている. | 元々のデータフレームに"ID_unit","Prob","Stratum"列が追加され,"Stratum"が分割されたデータの属する層(この場合Species)を数字で表す.よって,SpeciesとStratumはサンプル毎に対応が取れている. | ||
+ | |||
+ | ---- | ||
strata()関数について勘違いして,sizeオプションで分割後の各分割データに含まれる標本数を指定すると思っていたときに,元のデータ数と分割数に応じてsizeオプションに渡す数値ベクトルを計算するためのスクリプト.今となっては意味が無いが,一応残しておく | strata()関数について勘違いして,sizeオプションで分割後の各分割データに含まれる標本数を指定すると思っていたときに,元のデータ数と分割数に応じてsizeオプションに渡す数値ベクトルを計算するためのスクリプト.今となっては意味が無いが,一応残しておく | ||
ライン 137: | ライン 190: | ||
rm(temp) | rm(temp) | ||
} | } | ||
+ | | ||
+ | strata.size | ||
+ | 実行結果 | ||
+ | [1] 24 21 21 21 21 21 21 | ||