Chapter 3 Data Import / Export

2017-03-29 배균섭 교수님 강의

이번 시간에는 자료를 불러오고 조작을 가한 뒤 저장하는 방법에 대해 알아보겠습니다.

3.1 Read.csv

setwd 명령어를 통해서 자료가 있는 작업 공간을 설정할 수 있습니다. 설정 후에서는 dir()을 통해 파일의 이름을 확인 할 수 있습니다. read.csv를 통해서 자료를 R에서 사용할 수 있게 됩니다.

setwd("D:/Rt")
dir()
mydata <- read.csv("MyData2017.csv", as.is=TRUE)

3.2 Theoph 데이타

R에 기본적으로 들어있는 Theoph 약동학 자료에 대해 살펴보겠습니다.

head(Theoph, n = 11)
##    Subject   Wt Dose  Time  conc
## 1        1 79.6 4.02  0.00  0.74
## 2        1 79.6 4.02  0.25  2.84
## 3        1 79.6 4.02  0.57  6.57
## 4        1 79.6 4.02  1.12 10.50
## 5        1 79.6 4.02  2.02  9.66
## 6        1 79.6 4.02  3.82  8.58
## 7        1 79.6 4.02  5.10  8.36
## 8        1 79.6 4.02  7.03  7.47
## 9        1 79.6 4.02  9.05  6.89
## 10       1 79.6 4.02 12.12  5.94
## 11       1 79.6 4.02 24.37  3.28
tail(Theoph, n = 11)
##     Subject   Wt Dose  Time conc
## 122      12 60.5  5.3  0.00 0.00
## 123      12 60.5  5.3  0.25 1.25
## 124      12 60.5  5.3  0.50 3.96
## 125      12 60.5  5.3  1.00 7.82
## 126      12 60.5  5.3  2.00 9.72
## 127      12 60.5  5.3  3.52 9.75
## 128      12 60.5  5.3  5.07 8.57
## 129      12 60.5  5.3  7.07 6.59
## 130      12 60.5  5.3  9.03 6.11
## 131      12 60.5  5.3 12.05 4.57
## 132      12 60.5  5.3 24.15 1.17

R console에서 ?Theoph를 타이핑 치면 좀 더 자세한 정보를 얻을 수 있습니다.

3.3 lattice

lattice 패키지를 불러온 뒤 그림을 그려보겠습니다. (Sarkar 2017)

library(lattice) # trellis

xyplot(conc ~ Time | Subject, data=Theoph)

xyplot(conc ~ Time | Subject, data=Theoph, type="b")

Theoph[,"ID"] = as.numeric(as.character(Theoph[,"Subject"]))

xyplot(conc ~ Time | ID, data=Theoph, type="b")

xyplot(conc ~ Time | as.factor(ID), data=Theoph, type="b")

write.csv(Theoph, "Theoph.csv", row.names=FALSE, quote=FALSE, na="")

3.4 Subseting and write.csv

자료를 편집하고, subset을 만들고 각각을 파일로 저장하는 방법에 대해 알아보겠습니다.

IDs = sort(unique(Theoph[,"ID"])) ; IDs
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12
nID = length(IDs) ; nID
## [1] 12
demog = unique(Theoph[,c("ID","Wt")])
colnames(demog) = c("ID", "BWT")
write.csv(demog, "1-demog.csv", row.names=FALSE, quote=FALSE, na="")

DV = Theoph[,c("ID","Time", "conc")]
colnames(DV) = c("ID", "TIME", "DV")
write.csv(DV, "3-DV.csv", row.names=FALSE, quote=FALSE, na="")

adm = cbind(IDs, rep(0, nID), rep(320, nID))
colnames(adm) = c("ID", "TIME", "AMT")
write.csv(adm, "2-adm.csv", row.names=FALSE, quote=FALSE, na="")

demog = read.csv("1-demog.csv", as.is=TRUE)
adm = read.csv("2-adm.csv", as.is=TRUE)
dv = read.csv("3-dv.csv", as.is=TRUE)

AdmDv = merge(adm, dv, by=intersect(colnames(adm), colnames(dv)), all=TRUE)
AdmDv
##     ID  TIME AMT    DV
## 1    1  0.00 320  0.74
## 2    1  0.25  NA  2.84
## 3    1  0.57  NA  6.57
## 4    1  1.12  NA 10.50
## 5    1  2.02  NA  9.66
## 6    1  3.82  NA  8.58
## 7    1  5.10  NA  8.36
## 8    1  7.03  NA  7.47
## 9    1  9.05  NA  6.89
## 10   1 12.12  NA  5.94
## 11   1 24.37  NA  3.28
## 12   2  0.00 320  0.00
## 13   2  0.27  NA  1.72
## 14   2  0.52  NA  7.91
## 15   2  1.00  NA  8.31
## 16   2  1.92  NA  8.33
## 17   2  3.50  NA  6.85
## 18   2  5.02  NA  6.08
## 19   2  7.03  NA  5.40
## 20   2  9.00  NA  4.55
## 21   2 12.00  NA  3.01
## 22   2 24.30  NA  0.90
## 23   3  0.00 320  0.00
## 24   3  0.27  NA  4.40
## 25   3  0.58  NA  6.90
## 26   3  1.02  NA  8.20
## 27   3  2.02  NA  7.80
## 28   3  3.62  NA  7.50
## 29   3  5.08  NA  6.20
## 30   3  7.07  NA  5.30
## 31   3  9.00  NA  4.90
## 32   3 12.15  NA  3.70
## 33   3 24.17  NA  1.05
## 34   4  0.00 320  0.00
## 35   4  0.35  NA  1.89
## 36   4  0.60  NA  4.60
## 37   4  1.07  NA  8.60
## 38   4  2.13  NA  8.38
## 39   4  3.50  NA  7.54
## 40   4  5.02  NA  6.88
## 41   4  7.02  NA  5.78
## 42   4  9.02  NA  5.33
## 43   4 11.98  NA  4.19
## 44   4 24.65  NA  1.15
## 45   5  0.00 320  0.00
## 46   5  0.30  NA  2.02
## 47   5  0.52  NA  5.63
## 48   5  1.00  NA 11.40
## 49   5  2.02  NA  9.33
## 50   5  3.50  NA  8.74
## 51   5  5.02  NA  7.56
## 52   5  7.02  NA  7.09
## 53   5  9.10  NA  5.90
## 54   5 12.00  NA  4.37
## 55   5 24.35  NA  1.57
## 56   6  0.00 320  0.00
## 57   6  0.27  NA  1.29
## 58   6  0.58  NA  3.08
## 59   6  1.15  NA  6.44
## 60   6  2.03  NA  6.32
## 61   6  3.57  NA  5.53
## 62   6  5.00  NA  4.94
## 63   6  7.00  NA  4.02
## 64   6  9.22  NA  3.46
## 65   6 12.10  NA  2.78
## 66   6 23.85  NA  0.92
## 67   7  0.00 320  0.15
## 68   7  0.25  NA  0.85
## 69   7  0.50  NA  2.35
## 70   7  1.02  NA  5.02
## 71   7  2.02  NA  6.58
## 72   7  3.48  NA  7.09
## 73   7  5.00  NA  6.66
## 74   7  6.98  NA  5.25
## 75   7  9.00  NA  4.39
## 76   7 12.05  NA  3.53
## 77   7 24.22  NA  1.15
## 78   8  0.00 320  0.00
## 79   8  0.25  NA  3.05
## 80   8  0.52  NA  3.05
## 81   8  0.98  NA  7.31
## 82   8  2.02  NA  7.56
## 83   8  3.53  NA  6.59
## 84   8  5.05  NA  5.88
## 85   8  7.15  NA  4.73
## 86   8  9.07  NA  4.57
## 87   8 12.10  NA  3.00
## 88   8 24.12  NA  1.25
## 89   9  0.00 320  0.00
## 90   9  0.30  NA  7.37
## 91   9  0.63  NA  9.03
## 92   9  1.05  NA  7.14
## 93   9  2.02  NA  6.33
## 94   9  3.53  NA  5.66
## 95   9  5.02  NA  5.67
## 96   9  7.17  NA  4.24
## 97   9  8.80  NA  4.11
## 98   9 11.60  NA  3.16
## 99   9 24.43  NA  1.12
## 100 10  0.00 320  0.24
## 101 10  0.37  NA  2.89
## 102 10  0.77  NA  5.22
## 103 10  1.02  NA  6.41
## 104 10  2.05  NA  7.83
## 105 10  3.55  NA 10.21
## 106 10  5.05  NA  9.18
## 107 10  7.08  NA  8.02
## 108 10  9.38  NA  7.14
## 109 10 12.10  NA  5.68
## 110 10 23.70  NA  2.42
## 111 11  0.00 320  0.00
## 112 11  0.25  NA  4.86
## 113 11  0.50  NA  7.24
## 114 11  0.98  NA  8.00
## 115 11  1.98  NA  6.81
## 116 11  3.60  NA  5.87
## 117 11  5.02  NA  5.22
## 118 11  7.03  NA  4.45
## 119 11  9.03  NA  3.62
## 120 11 12.12  NA  2.69
## 121 11 24.08  NA  0.86
## 122 12  0.00 320  0.00
## 123 12  0.25  NA  1.25
## 124 12  0.50  NA  3.96
## 125 12  1.00  NA  7.82
## 126 12  2.00  NA  9.72
## 127 12  3.52  NA  9.75
## 128 12  5.07  NA  8.57
## 129 12  7.07  NA  6.59
## 130 12  9.03  NA  6.11
## 131 12 12.05  NA  4.57
## 132 12 24.15  NA  1.17

자료를 병합(merge)해 보겠습니다.

DataAll = merge(demog, AdmDv, by=c("ID"), all=TRUE)
DataAll
##     ID  BWT  TIME AMT    DV
## 1    1 79.6  0.00 320  0.74
## 2    1 79.6  0.25  NA  2.84
## 3    1 79.6  0.57  NA  6.57
## 4    1 79.6  1.12  NA 10.50
## 5    1 79.6  2.02  NA  9.66
## 6    1 79.6  3.82  NA  8.58
## 7    1 79.6  5.10  NA  8.36
## 8    1 79.6  7.03  NA  7.47
## 9    1 79.6  9.05  NA  6.89
## 10   1 79.6 12.12  NA  5.94
## 11   1 79.6 24.37  NA  3.28
## 12   2 72.4  0.00 320  0.00
## 13   2 72.4  0.27  NA  1.72
## 14   2 72.4  0.52  NA  7.91
## 15   2 72.4  1.00  NA  8.31
## 16   2 72.4  1.92  NA  8.33
## 17   2 72.4  3.50  NA  6.85
## 18   2 72.4  5.02  NA  6.08
## 19   2 72.4  7.03  NA  5.40
## 20   2 72.4  9.00  NA  4.55
## 21   2 72.4 12.00  NA  3.01
## 22   2 72.4 24.30  NA  0.90
## 23   3 70.5  0.00 320  0.00
## 24   3 70.5  0.27  NA  4.40
## 25   3 70.5  0.58  NA  6.90
## 26   3 70.5  1.02  NA  8.20
## 27   3 70.5  2.02  NA  7.80
## 28   3 70.5  3.62  NA  7.50
## 29   3 70.5  5.08  NA  6.20
## 30   3 70.5  7.07  NA  5.30
## 31   3 70.5  9.00  NA  4.90
## 32   3 70.5 12.15  NA  3.70
## 33   3 70.5 24.17  NA  1.05
## 34   4 72.7  0.00 320  0.00
## 35   4 72.7  0.35  NA  1.89
## 36   4 72.7  0.60  NA  4.60
## 37   4 72.7  1.07  NA  8.60
## 38   4 72.7  2.13  NA  8.38
## 39   4 72.7  3.50  NA  7.54
## 40   4 72.7  5.02  NA  6.88
## 41   4 72.7  7.02  NA  5.78
## 42   4 72.7  9.02  NA  5.33
## 43   4 72.7 11.98  NA  4.19
## 44   4 72.7 24.65  NA  1.15
## 45   5 54.6  0.00 320  0.00
## 46   5 54.6  0.30  NA  2.02
## 47   5 54.6  0.52  NA  5.63
## 48   5 54.6  1.00  NA 11.40
## 49   5 54.6  2.02  NA  9.33
## 50   5 54.6  3.50  NA  8.74
## 51   5 54.6  5.02  NA  7.56
## 52   5 54.6  7.02  NA  7.09
## 53   5 54.6  9.10  NA  5.90
## 54   5 54.6 12.00  NA  4.37
## 55   5 54.6 24.35  NA  1.57
## 56   6 80.0  0.00 320  0.00
## 57   6 80.0  0.27  NA  1.29
## 58   6 80.0  0.58  NA  3.08
## 59   6 80.0  1.15  NA  6.44
## 60   6 80.0  2.03  NA  6.32
## 61   6 80.0  3.57  NA  5.53
## 62   6 80.0  5.00  NA  4.94
## 63   6 80.0  7.00  NA  4.02
## 64   6 80.0  9.22  NA  3.46
## 65   6 80.0 12.10  NA  2.78
## 66   6 80.0 23.85  NA  0.92
## 67   7 64.6  0.00 320  0.15
## 68   7 64.6  0.25  NA  0.85
## 69   7 64.6  0.50  NA  2.35
## 70   7 64.6  1.02  NA  5.02
## 71   7 64.6  2.02  NA  6.58
## 72   7 64.6  3.48  NA  7.09
## 73   7 64.6  5.00  NA  6.66
## 74   7 64.6  6.98  NA  5.25
## 75   7 64.6  9.00  NA  4.39
## 76   7 64.6 12.05  NA  3.53
## 77   7 64.6 24.22  NA  1.15
## 78   8 70.5  0.00 320  0.00
## 79   8 70.5  0.25  NA  3.05
## 80   8 70.5  0.52  NA  3.05
## 81   8 70.5  0.98  NA  7.31
## 82   8 70.5  2.02  NA  7.56
## 83   8 70.5  3.53  NA  6.59
## 84   8 70.5  5.05  NA  5.88
## 85   8 70.5  7.15  NA  4.73
## 86   8 70.5  9.07  NA  4.57
## 87   8 70.5 12.10  NA  3.00
## 88   8 70.5 24.12  NA  1.25
## 89   9 86.4  0.00 320  0.00
## 90   9 86.4  0.30  NA  7.37
## 91   9 86.4  0.63  NA  9.03
## 92   9 86.4  1.05  NA  7.14
## 93   9 86.4  2.02  NA  6.33
## 94   9 86.4  3.53  NA  5.66
## 95   9 86.4  5.02  NA  5.67
## 96   9 86.4  7.17  NA  4.24
## 97   9 86.4  8.80  NA  4.11
## 98   9 86.4 11.60  NA  3.16
## 99   9 86.4 24.43  NA  1.12
## 100 10 58.2  0.00 320  0.24
## 101 10 58.2  0.37  NA  2.89
## 102 10 58.2  0.77  NA  5.22
## 103 10 58.2  1.02  NA  6.41
## 104 10 58.2  2.05  NA  7.83
## 105 10 58.2  3.55  NA 10.21
## 106 10 58.2  5.05  NA  9.18
## 107 10 58.2  7.08  NA  8.02
## 108 10 58.2  9.38  NA  7.14
## 109 10 58.2 12.10  NA  5.68
## 110 10 58.2 23.70  NA  2.42
## 111 11 65.0  0.00 320  0.00
## 112 11 65.0  0.25  NA  4.86
## 113 11 65.0  0.50  NA  7.24
## 114 11 65.0  0.98  NA  8.00
## 115 11 65.0  1.98  NA  6.81
## 116 11 65.0  3.60  NA  5.87
## 117 11 65.0  5.02  NA  5.22
## 118 11 65.0  7.03  NA  4.45
## 119 11 65.0  9.03  NA  3.62
## 120 11 65.0 12.12  NA  2.69
## 121 11 65.0 24.08  NA  0.86
## 122 12 60.5  0.00 320  0.00
## 123 12 60.5  0.25  NA  1.25
## 124 12 60.5  0.50  NA  3.96
## 125 12 60.5  1.00  NA  7.82
## 126 12 60.5  2.00  NA  9.72
## 127 12 60.5  3.52  NA  9.75
## 128 12 60.5  5.07  NA  8.57
## 129 12 60.5  7.07  NA  6.59
## 130 12 60.5  9.03  NA  6.11
## 131 12 60.5 12.05  NA  4.57
## 132 12 60.5 24.15  NA  1.17

References

Sarkar, Deepayan. 2017. Lattice: Trellis Graphics for R. https://CRAN.R-project.org/package=lattice.