Rの利用におけるデータの構造変換について
(質問文はやや長いです。が、rを良く分かっている方なら5分で回答できると思います。宜しく。)
rのパッケージ
prospectr(スペクトル解析パッケージ)
のサンプルデータ、
data(NIRsoil)
を使えば、もちろん、各種の解析を利用できます。
----解析事例----
data(NIRsoil)
spc <- 1/10^NIRsoil$spc # conversion to reflectance
opar <- par(no.readonly = TRUE)
par(mfrow=c(2,1),mar=c(4,4,2,2))
# plot of the 10 first spectra
matplot(as.numeric(colnames(spc)),t(spc[1:10,]),type='l',xlab='',ylab='Reflectance')
mtext('Raw spectra')
sg <- savitzkyGolay(X = spc,1,3,11,delta.wav=2)
matplot(as.numeric(colnames(sg)),t(sg[1:10,]),type='l',xlab='Wavelength /nm',ylab='1st derivative')
mtext('1st derivative spectra')
par(opar)
しかし、自身の測定データの解析のためには、
データをNIRsoilの構造と同様に、揃える必要があります。
--- NIRsoilのデータの構造
str(NIRsoil)
'data.frame': 825 obs. of 5 variables:
$ Nt : num 0.3 0.69 0.71 0.85 NA ...
$ Ciso : num 0.22 NA NA NA 0.9 NA NA 0.6 NA 1.28 ...
$ CEC : num NA NA NA NA NA NA NA NA NA NA ...
$ train: num 1 1 1 1 1 1 1 1 1 1 ...
$ spc : num [1:825, 1:700] 0.339 0.308 0.328 0.364 0.237 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr "1" "2" "3" "4" ...
.. ..$ : chr "1100" "1102" "1104" "1106" ...
下記のNIRdata(20試料のオクタン価とスペクトルデータと学習用データとして利用するか否か)を、「prospectr解析用NIRdataのデータの構造」と同形式にする方法を教えてください。
prospectrで、そのまま解析に使えるデータに変換するという意味です。
mergeやlist、data.frameなど使ってみました。が、入り口で滞って、何日も経ってしまった状態です。
---測定データの事例です NIRdata (21行19列のデータです)---
octane_value train spc 1200 spc 1220 spc 1240 spc 1260 spc 1280 spc 1300 spc 1320 spc 1340 spc 1360 spc 1380 spc 1400 spc 1420 spc 1440 spc 1460 spc 1480 spc 1500
S001 87.300003 1 0.718793 0.47983 0.303287 0.249064 0.219941 0.217121 0.216288 0.227625 0.361691 0.589986 0.645988 0.538654 0.461594 0.370164 0.337078 0.309021
S002 87 1 0.705452 0.478242 0.303177 0.250955 0.22484 0.222792 0.222059 0.234679 0.3573 0.570629 0.627256 0.532968 0.456798 0.369587 0.338996 0.307965
S003 87.099998 0 0.715063 0.481792 0.303144 0.249639 0.221632 0.219309 0.218484 0.230227 0.359782 0.582296 0.638856 0.537278 0.459966 0.370002 0.337218 0.308021
S004 89.699997 1 0.698932 0.459365 0.300909 0.250722 0.223777 0.222507 0.222271 0.234684 0.366456 0.585544 0.636199 0.530064 0.457917 0.370126 0.340554 0.311672
S005 84.900002 1 0.727977 0.501762 0.304779 0.248992 0.220078 0.217065 0.2156 0.226918 0.352821 0.57746 0.639063 0.542465 0.461136 0.369268 0.334596 0.304883
S006 84.699997 0 0.73038 0.502552 0.306028 0.249741 0.220786 0.217647 0.21612 0.227467 0.353544 0.578485 0.640407 0.543936 0.461733 0.37023 0.335319 0.305446
S007 89.300003 1 0.698869 0.459471 0.300931 0.250607 0.224062 0.222468 0.222204 0.234656 0.366339 0.585453 0.636356 0.530152 0.457866 0.370131 0.340759 0.311858
S008 87.599998 1 0.718464 0.479842 0.304914 0.250765 0.221781 0.219198 0.218318 0.229903 0.363731 0.590924 0.646568 0.539432 0.462627 0.371589 0.339133 0.310847
S009 84.5 0 0.728243 0.501776 0.304886 0.249364 0.220533 0.217685 0.216221 0.227548 0.353467 0.577907 0.639687 0.543177 0.461614 0.369762 0.334909 0.305169
S010 91.699997 1 0.690869 0.444372 0.297233 0.249787 0.224422 0.223518 0.223749 0.236797 0.37012 0.586896 0.633495 0.525145 0.454636 0.369145 0.341177 0.312429
S011 87.099998 1 0.71956 0.480494 0.303759 0.249389 0.220238 0.217519 0.216699 0.228127 0.362834 0.591117 0.646457 0.539409 0.46186 0.370534 0.337307 0.309375
S015 87.900002 0 0.697562 0.469558 0.303731 0.252023 0.226309 0.224526 0.224115 0.237138 0.35972 0.570893 0.625172 0.531521 0.456965 0.37049 0.341022 0.310194
S016 83.699997 1 0.736689 0.511382 0.310003 0.252525 0.22299 0.219492 0.217869 0.228919 0.354701 0.580277 0.642925 0.548054 0.465494 0.372948 0.338274 0.308018
S017 83.699997 1 0.736767 0.511008 0.309312 0.251552 0.222018 0.218426 0.216749 0.227675 0.353726 0.579338 0.642067 0.54756 0.464574 0.372061 0.337228 0.307062
S019 87.5 0 0.717429 0.479981 0.307708 0.252656 0.224826 0.221771 0.221115 0.233386 0.362348 0.5844 0.640641 0.541776 0.462737 0.373569 0.341698 0.312256
S020 91.699997 1 0.692081 0.445525 0.298082 0.250771 0.225432 0.224524 0.22467 0.237715 0.371253 0.589126 0.635223 0.526626 0.456057 0.370393 0.342309 0.313621
S021 91.199997 1 0.703255 0.453318 0.301555 0.251423 0.22409 0.222437 0.222423 0.234692 0.373132 0.598304 0.646007 0.532361 0.460468 0.372231 0.342747 0.314948
S022 89.400002 0 0.704249 0.463138 0.303194 0.251675 0.224294 0.222338 0.221957 0.234349 0.367274 0.58864 0.639438 0.533118 0.459046 0.370969 0.341205 0.312096
S024 91.699997 1 0.670775 0.436063 0.298666 0.254892 0.233298 0.234092 0.234547 0.249571 0.366246 0.560707 0.605316 0.516564 0.44732 0.369305 0.347325 0.314067
S026 84 1 0.730705 0.505504 0.308759 0.251851 0.222568 0.219325 0.217841 0.229233 0.354406 0.57808 0.640251 0.545529 0.463753 0.37177 0.33756 0.307426
--- prospectr解析用NIRdataのデータの構造 (恐らくこのようになると思います)
str(NIRdata)
'data.frame': 20 obs. of 3 variables:
$ octane_value : num
$ train: num
$ spc : num [1:20, 1:16]