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.