일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JavaScript
- window
- Express
- NPM
- SPC
- SSL
- Eclipse
- xPlatform
- Python
- Sqoop
- mybatis
- Android
- R
- SQL
- Spring
- 공정능력
- es6
- 보조정렬
- react
- vaadin
- hadoop
- Java
- table
- GIT
- IntelliJ
- MSSQL
- plugin
- Kotlin
- mapreduce
- tomcat
- Today
- Total
DBILITY
R file input, output ( 파일 입출력 ) 본문
csv부터 해봐야겠다.SPC시료를 csv로 다운로드할 수 있도록 구현되어 있으니까...
데이터 정제시 전처리과정이라고나 할까..읽어서 전처리할 것 다 하고 저장..
read.으로 시작하는 함수들이 있다.help에 read를 입력해 보니 csv, delim, table, table.url, socket도 있다.
callback도 되나?
파일저정시 인코딩을 아래와 같이 하면 된다.
참고 Rstudio 에디터에서 한글이 입력되지 않을 수 있다. 이때는 작업표시줄을 한번 클릭하고 다시 해보면 된다.
read.csv( file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
옵션을 잘 살펴보자.
#csv파일은 준비한다.저장시 UTF-8 확인
------------------
id,name,score
1,'가가가',50
2,'나나나',60
3,'다다다',70
4,'라라라',X
------------------
> x<-read.csv('a.csv', header = TRUE, fileEncoding = 'UTF-8')
> x
id name score
1 1 '가가가' 50
2 2 '나나나' 60
3 3 '다다다' 70
4 4 '라라라' X
#데이터프레임으로 변환이 되나 보다..factor타입으로 변환이 된 것도 있다.
#옵션에 stringsAsFactors = FALSE하면 문자열로 읽어 들임
> class(x)
[1] "data.frame"
> str(x)
'data.frame': 4 obs. of 3 variables:
$ id : int 1 2 3 4
$ name : Factor w/ 4 levels "'가가가'","'나나나'",..: 1 2 3 4
$ score: Factor w/ 4 levels "50","60","70",..: 1 2 3 4
> x$name
[1] '가가가' '나나나' '다다다'
Levels: '가가가' '나나나' '다다다'
#문자로 형전환
> x$name<-as.character(x$name)
> x$name
[1] "'가가가'" "'나나나'" "'다다다'"
> x$score
[1] 50 60 70 X
Levels: 50 60 70 X
#문제는 4행 3열의 X문자다. 결측치가 X로 입력되어 있다.
#읽어들이기 전에 데이터구성을 먼저 살피고 결측치처리 방향을 정해야겠다.
#아래처러 형변환을 시도했더니 factor의 index로 결과값이 변환이 된다.
> x$score<-as.numeric (x$score)
> x$score
[1] 1 2 3 4
#읽어 들일때 na.strings옵션으로 NA로 변경할 문자열을 줄 수 있다.
> x<-read.csv('a.csv', header = TRUE, stringsAsFactors = FALSE, fileEncoding = 'UTF-8', na.strings = c('X'))
> x
id name score
1 1 '가가가' 50
2 2 '나나나' 60
3 3 '다다다' 70
4 4 '라라라' NA
> class(x)
[1] "data.frame"
> str(x)
'data.frame': 4 obs. of 3 variables:
$ id : int 1 2 3 4
$ name : chr "'가가가'" "'나나나'" "'다다다'" "'라라라'"
$ score: int 50 60 70 NA
> x[1,2]
[1] "'가가가'"
#stringsAsFactors = FALSE 옵션을 사용해서 문자열이 factor로 변환되지 않게 했다.
#데이터를 보니 single quotation mark가 포함되어 있다. 실제파일에 문자열이 포함되게 되어 있으니까...
#옵션에 quate="\'"를 입력하고 실행하니 제거 된다.
> x<-read.csv('a.csv', header = TRUE, stringsAsFactors = FALSE,
+ fileEncoding = 'UTF-8', na.strings = c('X'), quote = "\'")
> x
id name score
1 1 가가가 50
2 2 나나나 60
3 3 다다다 70
4 4 라라라 NA
> str(x)
'data.frame': 4 obs. of 3 variables:
$ id : int 1 2 3 4
$ name : chr "가가가" "나나나" "다다다" "라라라"
$ score: int 50 60 70 NA
> x[1,2]
[1] "가가가"
> is.na(x)
id name score
[1,] FALSE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,] FALSE FALSE FALSE
[4,] FALSE FALSE TRUE
write.csv(x, file = "", append = FALSE, quote = TRUE, sep = " ",
eol = "\n", na = "NA", dec = ".", row.names = TRUE,
col.names = TRUE, qmethod = c("escape", "double"),
fileEncoding = "")
옵션을 잘 살펴 보자
> write.csv(x,'b.csv', quote=FALSE, row.names = FALSE, fileEncoding = 'UTF-8')
> y<-read.csv('b.csv', header = TRUE, stringsAsFactors = FALSE, fileEncoding = 'UTF-8')
> y
id name score
1 1 가가가 50
2 2 나나나 60
3 3 다다다 70
4 4 라라라 NA
> class(y)
[1] "data.frame"
> str(y)
'data.frame': 4 obs. of 3 variables:
$ id : int 1 2 3 4
$ name : chr "가가가" "나나나" "다다다" "라라라"
$ score: int 50 60 70 NA
> y[1,2]
[1] "가가가"
#저장된 파일을 열어 본다.
-----------------
"id","name","score"
1,"가가가",50
2,"나나나",60
3,"다다다",70
4,"라라라",NA
-----------------
작업중 변수(객체)를 임시로 저장하고, 불러오는 등의 과정이 필요할 수 있다.
save(),load()함수를 사용하면 되는데, binary형태로 저장된다.
> save(x,y,file="xy.obj")
#실제파일을 열어봤다.
-----------------------------------------------------------------
? r???```b`fed`b2Y?#'댃```2@2?Y?HD??
l?뙴y혎[n?뙴?"셦?@咽응?玲콘?쮍?A┢(?$
SZ쐺_뵄?9'??&?뭎뮜뾙?첏??f%?L 7?멁?H?HLIf?쏛즘뾰? ??6
-----------------------------------------------------------------
> ls()
[1] "x" "y"
> rm(list=ls())
> ls()
character(0)
> load("xy.obj")
> ls()
[1] "x" "y"
> x
id name score
1 1 가가가 50
2 2 나나나 60
3 3 다다다 70
4 4 라라라 NA
> y
id name score
1 1 가가가 50
2 2 나나나 60
3 3 다다다 70
4 4 라라라 NA
읽어들인 객체에 row나 column을 추가할 수 있다.
rbind(), cbind() 함수를 통해 가능하다.
말그대로 row append, col append다
#행추가
> a<-rbind(x,c('5','마마마',10))
> str(a)
'data.frame': 5 obs. of 3 variables:
$ id : chr "1" "2" "3" "4" ...
$ name : chr "가가가" "나나나" "다다다" "라라라" ...
$ score: chr "50" "60" "70" NA ...
> a
id name score
1 1 가가가 50
2 2 나나나 60
3 3 다다다 70
4 4 라라라 <NA>
5 5 마마마 10
#열추가
> a<-cbind(a,grade=c('F','D0','C0','F','F'),stringsAsFactors = FALSE)
> a
id name score grade
1 1 가가가 50 F
2 2 나나나 60 D0
3 3 다다다 70 C0
4 4 라라라 <NA> F
5 5 마마마 10 F
> str(a)
'data.frame': 5 obs. of 4 variables:
$ id : chr "1" "2" "3" "4" ...
$ name : chr "가가가" "나나나" "다다다" "라라라" ...
$ score: chr "50" "60" "70" NA ...
$ grade: chr "F" "D0" "C0" "F" ...
#열삭제
> a$grade = NULL
> tail(a)
id name score
1 1 가가가 50
2 2 나나나 60
3 3 다다다 70
4 4 라라라 <NA>
5 5 마마마 10
#행삭제
> a<-a[-c(5),]
> tail(a)
id name score
1 1 가가가 50
2 2 나나나 60
3 3 다다다 70
4 4 라라라 <NA>
> ls()
[1] "a" "x" "y"
> rm(c("a"))
Error in rm(c("a")) :
...는 반드시 이름 또는 문자열을 포함하고 있어야 합니다
> rm(list=c("a"))
> ls()
[1] "x" "y"
'statistics > R' 카테고리의 다른 글
R doBy package ,aggregate 사용하기 (0) | 2018.11.26 |
---|---|
R apply data manipulation ( 데이터 처리 ) (0) | 2018.11.26 |
R user defined function, variable scope ( 사용자 정의 함수와 변수의 스코프 ) (0) | 2018.11.23 |
R arithmetic operation and deal with NA (Not Assign-missing data) (0) | 2018.11.23 |
R control statements ( 제어문 ) (0) | 2018.11.23 |