Rで解析:データを結合してまとめるコマンド

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

データを結合してまとめるコマンドの紹介です。c、cbind、rbind、data.frame、listコマンドです。個人的にはデータの数や元のclassを保持しまとめることができるlistコマンドがオススメです。

classが異なるデータをまとめると、c、cbind、rbindではclassが変わってしまいます。大まかなclass優先順位は「character > numeric > integer」です。

実行コマンドはR version 4.1.2で確認しています。


スポンサーリンク

実行コマンド

詳細はコメント、コマンドのヘルプを確認してください。

###データ例の作成#####
#数値データの例
#実数
NumData1 <- c(0.1, 0.001, 0.0000000001)
#&#12463;&#12521;&#12473;&#12398;&#30906;&#35469;
class(NumData1)
[1] "numeric"

#&#25972;&#25968;
IntData2 <- 1:30

#&#12463;&#12521;&#12473;&#12398;&#30906;&#35469;
class(IntData2)
[1] "integer"

#&#25991;&#23383;&#12487;&#12540;&#12479;&#12398;&#20363;
CharData <- c("&#12363;", "&#12425;", "&#12384;", "&#12395;", "&#12356;", "&#12356;", "&#12418;", "&#12398;")

#&#12463;&#12521;&#12473;&#12398;&#30906;&#35469;
class(CharData)
[1] "character"
#&#22240;&#23376;&#12487;&#12540;&#12479;&#12398;&#20363;
FacData <- factor(CharData,
                  levels = unique(CharData))
#&#12463;&#12521;&#12473;&#12398;&#30906;&#35469;
class(FacData)
[1] "factor"
########


#c&#12467;&#12510;&#12531;&#12489;&#12391;&#32080;&#21512;
#&#25991;&#23383;&#21015;&#12364;&#12354;&#12427;&#12392;&#25968;&#23383;&#12418;&#25991;&#23383;&#21015;&#12395;&#12394;&#12427;
CTest <- c(NumData1, IntData2, CharData, FacData)

#class&#12398;&#30906;&#35469;
class(CTest)
[1] "character"

#&#20869;&#23481;&#12398;&#30906;&#35469;
CTest
[1] "0.1"   "0.001" "1e-10" "1"     "2"     "3"     "4"     "5"     "6"     "7"     "8"     "9"     "10"   
[14] "11"    "12"    "13"    "14"    "15"    "16"    "17"    "18"    "19"    "20"    "21"    "22"    "23"   
[27] "24"    "25"    "26"    "27"    "28"    "29"    "30"    "&#12363;"    "&#12425;"    "&#12384;"    "&#12395;"    "&#12356;"    "&#12356;"   
[40] "&#12418;"    "&#12398;"    "1"     "2"     "3"     "4"     "5"     "5"     "6"     "7"  

#&#25991;&#23383;&#21015;&#12364;&#12394;&#12356;&#22580;&#21512;&#12399;&#25968;&#23383;&#12364;&#20778;&#20808;(numeric > integer)
#&#22240;&#23376;&#12487;&#12540;&#12479;&#12399;&#22240;&#23376;&#27700;&#28310;&#12395;&#12394;&#12427;
CTest <- c(NumData1, IntData2, FacData)

#class&#12398;&#30906;&#35469;
class(CTest)
[1] "numeric"

#&#20869;&#23481;&#12398;&#30906;&#35469;
CTest
[1] 1.0e-01 1.0e-03 1.0e-10 1.0e+00 2.0e+00 3.0e+00 4.0e+00 5.0e+00 6.0e+00 7.0e+00 8.0e+00 9.0e+00 1.0e+01
[14] 1.1e+01 1.2e+01 1.3e+01 1.4e+01 1.5e+01 1.6e+01 1.7e+01 1.8e+01 1.9e+01 2.0e+01 2.1e+01 2.2e+01 2.3e+01
[27] 2.4e+01 2.5e+01 2.6e+01 2.7e+01 2.8e+01 2.9e+01 3.0e+01 1.0e+00 2.0e+00 3.0e+00 4.0e+00 5.0e+00 5.0e+00
[40] 6.0e+00 7.0e+00

#cbind&#12391;&#32080;&#21512;(rbind&#12418;&#32080;&#21512;&#26041;&#21521;&#12364;&#36949;&#12358;&#12384;&#12369;&#12391;&#21516;&#12376;)
#&#38263;&#12373;&#12364;&#30064;&#12394;&#12427;&#12487;&#12540;&#12479;&#12399;&#19968;&#30058;&#38263;&#12356;&#12487;&#12540;&#12479;&#12364;&#20778;&#20808;&#12373;&#12428;&#12427;
#&#36275;&#12426;&#12394;&#12356;&#12487;&#12540;&#12479;&#12399;&#32368;&#12426;&#36820;&#12375;&#12391;&#35036;&#23436;&#12373;&#12428;&#12414;&#12377;
CBindTest <- cbind(NumData1, IntData2, CharData, FacData)
Warning message:
  In cbind(NumData1, IntData2, CharData, FacData) :
  number of rows of result is not a multiple of vector length (arg 3)

#class&#12398;&#30906;&#35469;
class(CBindTest)
[1] "matrix"

#&#20869;&#23481;&#12398;&#30906;&#35469;
CBindTest
NumData1 IntData2 CharData FacData
[1,] "0.1"    "1"      "&#12363;"     "1"    
[2,] "0.001"  "2"      "&#12425;"     "2"     
#&#30465;&#30053;   
[28,] "0.1"    "28"     "&#12395;"     "4"    
[29,] "0.001"  "29"     "&#12356;"     "5"    
[30,] "1e-10"  "30"     "&#12356;"     "5"   

#data.frame&#12391;&#12487;&#12540;&#12479;&#12434;&#32080;&#21512;
#&#21015;&#25968;&#12364;&#30064;&#12394;&#12427;&#12392;&#12456;&#12521;&#12540;&#12391;&#32080;&#21512;&#12364;&#12391;&#12365;&#12394;&#12356;
data.frame(NumData1, IntData2, CharData, FacData)
Error in data.frame(NumData1, IntData2, CharData, FacData) : 
  &#24341;&#25968;&#12395;&#30064;&#12394;&#12427;&#21015;&#25968;&#12398;&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#12364;&#21547;&#12414;&#12428;&#12390;&#12356;&#12414;&#12377;: 3, 30, 8 

#list&#12391;&#32080;&#21512;
#&#20803;&#12398;class&#12364;&#20445;&#25345;&#12373;&#12428;&#12414;&#12377;,&#12487;&#12540;&#12479;&#25968;,class&#12364;&#36949;&#12387;&#12390;&#12418;&#22823;&#19976;&#22827;
ListTest <- list(NumData1, IntData2, CharData, FacData)

#class&#12398;&#30906;&#35469;
class(ListTest)

#&#27083;&#36896;&#12398;&#30906;&#35469;
str(ListTest)
List of 4
$ : num [1:3] 1e-01 1e-03 1e-10
$ : int [1:30] 1 2 3 4 5 6 7 8 9 10 ...
$ : chr [1:8] "&#12363;" "&#12425;" "&#12384;" "&#12395;" ...
$ : Factor w/ 7 levels "&#12363;","&#12425;","&#12384;",..: 1 2 3 4 5 5 6 7

#list&#12398;&#36899;&#32080;:c&#12467;&#12510;&#12531;&#12489;&#12434;&#20351;&#12356;&#12414;&#12377;
ListTest2 <- list("karada-good.net")

c(ListTest, ListTest2)
[[1]]
[1] 1e-01 1e-03 1e-10
[[2]]
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
[[3]]
[1] "&#12363;" "&#12425;" "&#12384;" "&#12395;" "&#12356;" "&#12356;" "&#12418;" "&#12398;"
[[4]]
[1] &#12363; &#12425; &#12384; &#12395; &#12356; &#12356; &#12418; &#12398;
Levels: &#12363; &#12425; &#12384; &#12395; &#12356; &#12418; &#12398;
[[5]]
[1] "karada-good.net"

#&#21442;&#32771;:list&#12398;&#12487;&#12540;&#12479;&#12434;&#21462;&#12426;&#20986;&#12377;
#[[]]&#12391;&#25351;&#23450;&#12377;&#12427;&#12392;&#12458;&#12522;&#12472;&#12490;&#12523;&#12398;&#12487;&#12540;&#12479;&#12364;&#21462;&#12426;&#20986;&#12379;&#12414;&#12377;
GetData <- ListTest[[3]]

class(GetData)
[1] "character"

GetData
[1] "&#12363;" "&#12425;" "&#12384;" "&#12395;" "&#12356;" "&#12356;" "&#12418;" "&#12398;"

##[]&#12391;&#25351;&#23450;&#12377;&#12427;&#12392;list&#12391;&#12377;
GetData <- ListTest[3]

class(GetData)
[1] "list"

GetData
[1] "&#12363;" "&#12425;" "&#12384;" "&#12395;" "&#12356;" "&#12356;" "&#12418;" "&#12398;"

少しでも、あなたの解析が楽になりますように!!

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