データフレームはRでよく使う形式です。データフレームでよく使用する基本的なコマンドをまとめました。Rのデータフレームはエクセルのような行列に見えますが、実は行列をもつリストとなります。しかし、リストと異なり各列は同じ長さのベクトルが必要ですので注意が必要です。
パッケージの追加なくコマンドは使用することができます。
コマンドはwindows11のR version 4.2.2で確認しています。
実行コマンド
詳細はコメントを確認してください。
#データフレームの作成:data.frame(列名 = データ, ...) #文字列を因子(factor)にしない場合はI(データ)とします TestData <- data.frame(Group = paste0("TEST", c(1:5)), Data1 = sample(1:500, 10), Data2 = sample(200:300, 10)) TestData Group Data1 Data2 1 TEST1 482 208 2 TEST2 410 224 3 TEST3 462 281 4 TEST4 381 238 5 TEST5 262 248 6 TEST1 217 221 7 TEST2 125 246 8 TEST3 233 260 9 TEST4 45 270 10 TEST5 95 243 #データフレームの内容を確認 #構造を確認:str(データフレーム名) #一行目が文字列ではなく因子になっています str(TestData) 'data.frame': 10 obs. of 3 variables: $ Group: Factor w/ 5 levels "TEST1","TEST2",..: 1 2 3 4 5 1 2 3 4 5 $ Data1: int 482 410 462 381 262 217 125 233 45 95 $ Data2: int 208 224 281 238 248 221 246 260 270 243 #サマリー:summary(データフレーム名) #行毎の要約です summary(TestData) Group Data1 Data2 TEST1:2 Min. : 45.0 Min. :208.0 TEST2:2 1st Qu.:148.0 1st Qu.:227.5 TEST3:2 Median :247.5 Median :244.5 TEST4:2 Mean :271.2 Mean :243.9 TEST5:2 3rd Qu.:402.8 3rd Qu.:257.0 Max. :482.0 Max. :281.0 #データフレームから抽出:subset(データフレーム名, 抽出条件, select = 行を指定) #例:2行目を基準にデータから2の倍数を抽出 subset(TestData, TestData[, 2] %% 2 == 0) Group Data1 Data2 1 TEST1 482 208 2 TEST2 410 224 3 TEST3 462 281 5 TEST5 262 248 #例:1行目のデータを基準にTEST1と5を抽出 #%in%を使用します subset(TestData, TestData[, 1] %in% c("TEST1", "TEST5")) Name D1 D2 1 TEST1 482 208 5 TEST5 262 248 6 TEST1 217 221 10 TEST5 95 243 #例:2行目のデータから400以上を抽出 subset(TestData, TestData[, 2] > 400) Group Data1 Data2 1 TEST1 482 208 2 TEST2 410 224 3 TEST3 462 281 #例:2行目のデータから2の倍数に対応する3行目を抽出 subset(TestData, TestData[, 2] %% 2 == 0, select = colnames(TestData[3])) Data2 1 208 2 224 3 281 5 248 #データフレームを結合する #横に結合:cbind(データフレーム名, データフレーム名) cbind(TestData, TestData) Group Data1 Data2 Group Data1 Data2 1 TEST1 482 208 TEST1 482 208 2 TEST2 410 224 TEST2 410 224 3 TEST3 462 281 TEST3 462 281 4 TEST4 381 238 TEST4 381 238 5 TEST5 262 248 TEST5 262 248 6 TEST1 217 221 TEST1 217 221 7 TEST2 125 246 TEST2 125 246 8 TEST3 233 260 TEST3 233 260 9 TEST4 45 270 TEST4 45 270 10 TEST5 95 243 TEST5 95 243 #縦に結合:rbind(データフレーム名, データフレーム名) rbind(TestData, TestData) Group Data1 Data2 1 TEST1 482 208 2 TEST2 410 224 省略... 19 TEST4 45 270 20 TEST5 95 243 #重複する行で結合:merge(データフレーム名, データフレーム名, by = 行名) merge(TestData, TestData, by = c(colnames(TestData[1]))) Group Data1.x Data2.x Data1.y Data2.y 1 TEST1 482 208 482 208 2 TEST1 482 208 217 221 省略... 19 TEST5 95 243 262 248 20 TEST5 95 243 95 243 #行毎の和:colSums(データフレーム名, na.rm = FALSE) #欠損値はna.rm = TRUEで指定します colSums(TestData[, 2:3]) Data1 Data2 2712 2439 #行毎の平均:colMeans(データフレーム名, na.rm = FALSE) #欠損値はna.rm = TRUEで指定します colMeans(TestData[, 2:3]) Data1 Data2 271.2 243.9 #列毎に和:rowSums(データフレーム名, na.rm = FALSE) #欠損値はna.rm = TRUEで指定します rowSums(TestData[, 2:3]) [1] 690 634 743 619 510 438 371 493 315 338 #列毎の平均:rowMeans(データフレーム名, na.rm = FALSE) #欠損値はna.rm = TRUEで指定します rowMeans(TestData[, 2:3]) [1] 345.0 317.0 371.5 309.5 255.0 219.0 185.5 246.5 157.5 169.0 #重複を取り除く:uniqueコマンド TestData[unique(TestData[, 1]),] Group Data1 Data2 1 TEST1 482 208 2 TEST2 410 224 3 TEST3 462 281 4 TEST4 381 238 5 TEST5 262 248 #先頭を表示:headコマンド head(TestData) Group Data1 Data2 1 TEST1 482 208 2 TEST2 410 224 3 TEST3 462 281 4 TEST4 381 238 5 TEST5 262 248 6 TEST1 217 221 #末尾を表示:tailコマンド tail(TestData) Group Data1 Data2 5 TEST5 262 248 6 TEST1 217 221 7 TEST2 125 246 8 TEST3 233 260 9 TEST4 45 270 10 TEST5 95 243 #行名を変更:colnamesコマンド colnames(TestData) <- c("Name", "D1", "D2") Name D1 D2 1 TEST1 482 208 2 TEST2 410 224 3 TEST3 462 281 4 TEST4 381 238 5 TEST5 262 248 6 TEST1 217 221 7 TEST2 125 246 8 TEST3 233 260 9 TEST4 45 270 10 TEST5 95 243 #列名を変更:rownamesコマンド rownames(TestData) <- paste0("Test", 1:10) Name D1 D2 Test1 TEST1 482 208 Test2 TEST2 410 224 Test3 TEST3 462 281 Test4 TEST4 381 238 Test5 TEST5 262 248 Test6 TEST1 217 221 Test7 TEST2 125 246 Test8 TEST3 233 260 Test9 TEST4 45 270 Test10 TEST5 95 243
少しでも、あなたのウェブや実験の解析が楽になりますように!!