[사용 함수]
함수명 | 설명 |
list.files() | 해당 폴더의 파일명 모두 반환 |
head | 처음 6개의 값 반환 |
tail | 끝에서 6개의 값 반환 |
scan | 벡터형으로 값을 직접 입력할 수도 있고, File을 읽어올 수도 있음 |
readline | 한 줄 단위로 데이터 입력 받음, 입력값은 character형만 가능 |
readLines | 파일에서 데이터를 행 단위로 읽어서 벡터의 형태로 만들어 주는 명령어 |
read.table() | txt파일을 data.frame형태로 읽기 |
read.csv() | csv파일 읽어옴, header = T가 디폴트값 |
read.delim() | 클립보드 사용해서 data frame 형태로 불러오기 |
print() | 출력 함수 |
cat() | 표시만 해주는 void 함수 |
save() | .RData형식 파일 저장 |
load() | .RData형식 파일 불러오기 |
write.table() | txt 파일로 저장 |
write.csv() | csv파일로 저장 |
[데이터 입력 및 불러오기]
[ list.files(), head(), tail() 함수]
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 31 32 33 34 35 36 37 | > # list.files(), head(), tail() 함수 > list.files("c:/Users/S/Desktop/교재/" ) #해당 폴더의 파일명 모두 반환 [1] "Week2_Why_R_Programming.pdf" [2] "Week3_R실전예제소개_R_RStudio설치.pdf" [3] "Week4_R기초문법_자료형_변수.pdf" [4] "Week5_행렬_배열_리스트_데이터프레임.pdf" [5] "Week6_데이터입출력_함수I.pdf" [6] "Week7_함수II.pdf" [7] "Week9_패키지I.pdf" > list.files("c:/Users/S/Desktop/교재/", recursive=T) # 디렉토리 안에 폴더가 또 있으면 그 안의 파일까지 전부 불러옴 [1] "Week2_Why_R_Programming.pdf" [2] "Week3_R실전예제소개_R_RStudio설치.pdf" [3] "Week4_R기초문법_자료형_변수.pdf" [4] "Week5_행렬_배열_리스트_데이터프레임.pdf" [5] "Week6_데이터입출력_함수I.pdf" [6] "Week7_함수II.pdf" [7] "Week9_패키지I.pdf" > list.files("c:/Users/S/Desktop/교재/", all.files=T) #숨김 파일까지 전부 불러옴. [1] "." [2] ".." [3] "Week2_Why_R_Programming.pdf" [4] "Week3_R실전예제소개_R_RStudio설치.pdf" [5] "Week4_R기초문법_자료형_변수.pdf" [6] "Week5_행렬_배열_리스트_데이터프레임.pdf" [7] "Week6_데이터입출력_함수I.pdf" [8] "Week7_함수II.pdf" [9] "Week9_패키지I.pdf" > head(list.files()) # 개수 지정 안하면 처음 6개의 값만 반환 [1] "1-4호선승하차승객수.csv" [2] "1-4호선승하차승객수_MAC용.csv" [3] "11.csv" [4] "1군전염병발병현황_년도별.csv" [5] "1군전염병발병현황_월별.csv" [6] "2000-2013년 연령별실업율_15-19세.csv" > tail(list.files(), 3) # 개수 지정한 만큼 끝에서 부터 반환 [1] "학생시험결과_전체점수.csv" "호텔gsub.txt" [3] "호텔gsub_utf8.txt" | cs |
[ scan() 함수]
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | > # scan() 함수 > # 기본 실수형 벡터로 저장 > scan1 <- scan("scan_1.txt") ; scan1 Read 4 items [1] 111 222 333 444 > scan2 <- scan('scan_2.txt',n=3) ;scan2 #3개값만 불러옴. Read 3 items [1] 1 2 3 > scan2 <- scan('scan_2.txt',nlines=2) ;scan2 #두 줄의 값만 불러옴. Read 2 items [1] 1 2 > > # 데이터 형태 지정 > scan("scan_1.txt", what=integer(0)) # 정수형 지정 Read 4 items [1] 111 222 333 444 > scan("scan_2.txt", what = character(0)) # 문자형 지정 Read 4 items [1] "1.00" "2.00" "3.00" "4.00" > scan('scan_3.txt',what="") # 문자형 지정 Read 4 items [1] "aaa" "bbb" "ccc" "ddd" > scan("scan_4.txt", what=list("","",integer(0),numeric(0))) # 리스트 형 지정 Read 1 record [[1]] [1] "aaa" [[2]] [1] "bbb" [[3]] [1] 111 [[4]] [1] 2.34 > scan("scan_4.txt", what=list(S_ID="",NAME="",RANK=integer(0),SCORE=numeric(0))) # 리스트 형 지정 Read 1 record $S_ID [1] "aaa" $NAME [1] "bbb" $RANK [1] 111 $SCORE [1] 2.34 | cs |
1 2 3 4 5 | # 빠르게 벡터 형태로 데이터 입력 input <- scan( ) #input변수에 저장 (예: 1 + 2 + 3 + Enter) input input2 <- scan(what="") #문자 입력 받을 때는 what="" 사용 (예: a + b + Enter) input2 | cs |
1 2 3 4 5 6 7 8 9 10 | > # csv 파일 scan으로 읽기 가능 > scan("fruits_3.csv", what="") # 기본적으로 공백을 기준으로 구분 Read 5 items [1] "no,name,price,qty" "1,apple,500,6" "2,banana,200,2" [4] "3,peach,200,7" "4,berry,50,9" > scan("fruits_3.csv", what="", sep=",") # 구분 문자 지정 Read 20 items [1] "no" "name" "price" "qty" "1" "apple" "500" [8] "6" "2" "banana" "200" "2" "3" "peach" [15] "200" "7" "4" "berry" "50" "9" | cs |
[ readline(), readLines() 함수]
1 2 3 4 5 6 | # readline(), readLines() 함수 # 기본 character형으로 저장(numeric으로 읽을 수 없다.) # 한 줄 한 줄 입력 받는다 . input1 <- readline("Are you OK? : ") ;input1 #화면에 원하는 글자를 출력한 후 입력을 받을 수도 있음. input5 <- readLines("scan_4.txt") ; input5 input5 <- readLines("scan_4.txt", n=3) ; input5 # 3줄만 읽어옴 | cs |
[ read.table() 함수]
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 31 32 33 34 35 36 37 38 39 40 | > # read.table() 함수 > # txt파일을 data.frame형태로 읽기 > # 주석은 자동 제외하고 읽어옴 > read.table('fruits.txt') V1 V2 V3 V4 1 no name price qty 2 1 apple 500 5 3 2 banana 200 2 4 3 peach 200 7 5 4 berry 50 9 > read.table('fruits.txt', + header=T, + stringsAsFactors = F)# header 지정 no name price qty 1 1 apple 500 5 2 2 banana 200 2 3 3 peach 200 7 4 4 berry 50 9 > > #건너 뛸 줄 수를 지정(주석도 줄에 포함!) > read.table('fruits_2.txt',skip=2) # 스킵할 줄 수 지정 V1 V2 V3 V4 1 2 banana 200 2 2 3 peach 200 7 3 4 berry 50 9 > > #출력할 줄 수를 지정(결과에서 상위 2줄만 출력) > #주석은 줄에 포함 안됨 > read.table('fruits_2.txt',nrows=2) V1 V2 V3 V4 1 1 apple 500 6 2 2 banana 200 2 > > # csv 파일 read.table으로 읽기 가능 > read.table('fruits_3.csv', sep=",", header=T) # 구분 문자 지정 no name price qty 1 1 apple 500 6 2 2 banana 200 2 3 3 peach 200 7 4 4 berry 50 9 | cs |
1 2 3 | # 클립보드 데이터 read.table으로 읽기 가능 read.table("clipboard", sep="\t", header=T) #sep="\t" 안써도 에러 안남. | cs |
[ read.csv() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | > # read.csv() 함수 > # csv파일 읽어옴, header = T가 디폴트값 > read.csv('fruits_3.csv') no name price qty 1 1 apple 500 6 2 2 banana 200 2 3 3 peach 200 7 4 4 berry 50 9 > read.csv('fruits_4.csv',header=F) # header 지정 V1 V2 V3 V4 1 1 apple 500 6 2 2 banana 200 2 3 3 peach 200 7 4 4 berry 50 9 > > label <- c('NO','NAME','PRICE','QTY') > read.csv('fruits_4.csv',header=F,col.names=label) # 열이름 지정 NO NAME PRICE QTY 1 1 apple 500 6 2 2 banana 200 2 3 3 peach 200 7 4 4 berry 50 9 | cs |
[ read.delim() 함수]
1 2 3 4 | # read.delim() 함수 # 클립보드 사용해서 data frame 형태로 불러오기 # fruits_6.xls 파일을 열고 원하는 부분 복사(ctrl+c)한 후 아래 명령 수행 read.delim("clipboard") # 클립보드에 저장된 부분 읽어오기 | cs |
[데이터 입력 및 불러오기]
[print(), cat() 함수]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | > # print(), cat() 함수 > print(1,2) # 1 하나만 반환 [1] 1 > cat(1,2) # 표시만 해주는 void 함수 1 2> > a<-1:10 > b<-11:15 > c<-c("a","b","c","d","e") > print(a,b) # 앞에 것 하나만 반환 [1] 1 2 3 4 5 6 7 8 9 10 > print(a,c) # 두 데이터가 형태가 다름 오류 Error in print.default(a, c) : invalid 'digits' argument In addition: Warning message: In print.default(a, c) : NAs introduced by coercion > cat(a,b) # 단순히 엮어서 표시만 해줌 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15> cat(a,c) 1 2 3 4 5 6 7 8 9 10 a b c d e> > d<-print(a,b) # 앞에 것만 저장됨 [1] 1 2 3 4 5 6 7 8 9 10 > e<-cat(a,b) # 보이는 것과 달리 NULL이 저장됨 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15> e NULL | cs |
[save(), load() 함수]
1 2 3 4 5 6 7 8 | # save(), load() 함수 # .RData형식 파일 저장 및 불러오기 save(a,b,c,d, file="save_test.RData") #RData 파일 저장 load("save_test.RData") #RData파일 불러오기 save(list=ls(),file="aaa.RData") # Data 모두 저장 load("aaa.RData") | cs |
[write.table() , write.csv() 함수]
1 2 3 4 5 6 7 8 9 10 | # write.table() , write.csv() 함수 new<-data.frame(no=5,name="grape",price= 350,qty=10) write.table(new,"fruits_new.txt") # txt 파일로 저장 write.csv(new,"fruits_new.csv") # csv파일로 저장 write.csv(new, "fruits_new.csv", row.names=F) # 열이름 지정 # csv파일을 메모장에서 읽어보면 따옴표 구분되는 것을 확인할 수 있는데 # 이것을 지우는 파라미터 write.csv(fruits_new, "fruits_new.csv", row.names=F, quote=F) | cs |
출처 - 경영프로그래밍 강의 자료 (양성병 교수님)
'IT,인터넷 관련 학습 > R언어 학습' 카테고리의 다른 글
[R] 함수 II (0) | 2019.05.12 |
---|---|
[R] 함수 I (0) | 2019.05.12 |
[R] 데이타프레임 (data.frame) (0) | 2019.05.11 |
[R] 리스트 (List) (0) | 2019.05.11 |
[R] 배열 (Array) (0) | 2019.05.11 |