[사용 함수]

함수명

설명

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
[1111 222 333 444
> scan2 <- scan('scan_2.txt',n=3) ;scan2 #3개값만 불러옴.
Read 3 items
[11 2 3
> scan2 <- scan('scan_2.txt',nlines=2) ;scan2 #두 줄의 값만 불러옴.
Read 2 items
[11 2
> 
> # 데이터 형태 지정
> scan("scan_1.txt", what=integer(0)) # 정수형 지정
Read 4 items
[1111 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]]
[1111
 
[[4]]
[12.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
[1111
 
$SCORE
[12.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 하나만 반환
[11
> 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

+ Recent posts