Rで解析:データフレームに関する基本的なコマンドの復習です

Rの解析に役に立つ記事
スポンサーリンク

データフレームは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

#&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#12398;&#20869;&#23481;&#12434;&#30906;&#35469;
#&#27083;&#36896;&#12434;&#30906;&#35469;:str(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;)
#&#19968;&#34892;&#30446;&#12364;&#25991;&#23383;&#21015;&#12391;&#12399;&#12394;&#12367;&#22240;&#23376;&#12395;&#12394;&#12387;&#12390;&#12356;&#12414;&#12377;
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

#&#12469;&#12510;&#12522;&#12540;:summary(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;)
#&#34892;&#27598;&#12398;&#35201;&#32004;&#12391;&#12377;
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

#&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#12363;&#12425;&#25277;&#20986;:subset(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, &#25277;&#20986;&#26465;&#20214;, select = &#34892;&#12434;&#25351;&#23450;)
#&#20363;:2&#34892;&#30446;&#12434;&#22522;&#28310;&#12395;&#12487;&#12540;&#12479;&#12363;&#12425;2&#12398;&#20493;&#25968;&#12434;&#25277;&#20986;
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

#&#20363;:1&#34892;&#30446;&#12398;&#12487;&#12540;&#12479;&#12434;&#22522;&#28310;&#12395;TEST1&#12392;5&#12434;&#25277;&#20986;
#%in%&#12434;&#20351;&#29992;&#12375;&#12414;&#12377;
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

#&#20363;:2&#34892;&#30446;&#12398;&#12487;&#12540;&#12479;&#12363;&#12425;400&#20197;&#19978;&#12434;&#25277;&#20986;
subset(TestData, TestData[, 2] &gt; 400)
Group Data1 Data2
1 TEST1   482   208
2 TEST2   410   224
3 TEST3   462   281

#&#20363;:2&#34892;&#30446;&#12398;&#12487;&#12540;&#12479;&#12363;&#12425;2&#12398;&#20493;&#25968;&#12395;&#23550;&#24540;&#12377;&#12427;3&#34892;&#30446;&#12434;&#25277;&#20986;
subset(TestData, TestData[, 2] %% 2 == 0, select = colnames(TestData[3]))
Data2
1   208
2   224
3   281
5   248

#&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#12434;&#32080;&#21512;&#12377;&#12427;
#&#27178;&#12395;&#32080;&#21512;:cbind(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, &#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;)
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 

#&#32294;&#12395;&#32080;&#21512;:rbind(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, &#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;)
rbind(TestData, TestData)
Group Data1 Data2
1  TEST1   482   208
2  TEST2   410   224
&#30465;&#30053;...
19 TEST4    45   270
20 TEST5    95   243

#&#37325;&#35079;&#12377;&#12427;&#34892;&#12391;&#32080;&#21512;:merge(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, &#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, by = &#34892;&#21517;)
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
&#30465;&#30053;...
19 TEST5      95     243     262     248
20 TEST5      95     243      95     243

#&#34892;&#27598;&#12398;&#21644;:colSums(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, na.rm = FALSE)
#&#27424;&#25613;&#20516;&#12399;na.rm = TRUE&#12391;&#25351;&#23450;&#12375;&#12414;&#12377;
colSums(TestData[, 2:3])
Data1 Data2 
2712  2439 

#&#34892;&#27598;&#12398;&#24179;&#22343;:colMeans(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, na.rm = FALSE)
#&#27424;&#25613;&#20516;&#12399;na.rm = TRUE&#12391;&#25351;&#23450;&#12375;&#12414;&#12377;
colMeans(TestData[, 2:3])
Data1 Data2 
271.2 243.9

#&#21015;&#27598;&#12395;&#21644;:rowSums(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, na.rm = FALSE)
#&#27424;&#25613;&#20516;&#12399;na.rm = TRUE&#12391;&#25351;&#23450;&#12375;&#12414;&#12377;
rowSums(TestData[, 2:3])
[1] 690 634 743 619 510 438 371 493 315 338

#&#21015;&#27598;&#12398;&#24179;&#22343;:rowMeans(&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#21517;, na.rm = FALSE)
#&#27424;&#25613;&#20516;&#12399;na.rm = TRUE&#12391;&#25351;&#23450;&#12375;&#12414;&#12377;
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

#&#37325;&#35079;&#12434;&#21462;&#12426;&#38500;&#12367;:unique&#12467;&#12510;&#12531;&#12489;
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

#&#20808;&#38957;&#12434;&#34920;&#31034;:head&#12467;&#12510;&#12531;&#12489;
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

#&#26411;&#23614;&#12434;&#34920;&#31034;:tail&#12467;&#12510;&#12531;&#12489;
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

#&#34892;&#21517;&#12434;&#22793;&#26356;:colnames&#12467;&#12510;&#12531;&#12489;
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

#&#21015;&#21517;&#12434;&#22793;&#26356;:rownames&#12467;&#12510;&#12531;&#12489;
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

少しでも、あなたのウェブや実験の解析が楽になりますように!!

タイトルとURLをコピーしました