반응형

/*********************************************************************************************************
-- Title : [R3.3] 데이터/파일 읽기(Console, Text, Csv, Tsv, Excel, HTML) 및 쓰기
-- Reference : hrd-net
-- Key word : R 콘솔 console scan() edit() read.table() read.csv() choose() read.xlsx() java jre rjava write.csv() write.xlsx() sink() 
                  읽기 쓰기 read write 파일 file xls xlsx 엑셀 excel csv tsv 
*********************************************************************************************************/

-- R

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
  
# ********************************************
# -- 콘솔 입력(scan())
# ********************************************
# -- scan() 함수를 이용(숫자입력 )
= scan()                   # Console창에서 입력하고 Enter를 두번.
x
 
# -- 합계 구하기
sum = sum(x) 
sum
 
# -- 문자입력
= scan(what="")
y
 
 
# ********************************************
# -- 편집기 입력(edit())
# ********************************************
# -- edit() 함수를 이용한 입력
df = data.frame()            #빈 데이터프레임 생성
df = edit(df)                # 데이터 편집기
df
 
 
# ********************************************
# -- TXT 파일 읽기(read.table())
# ********************************************
 
# -- 탭 구분 파일 읽기 
getwd()
setwd("C:\\RProject\\HRD-Net\\R-Data\\Part-I")
 
student0  = read.table(file="student.txt")                           # 컬럼명이 없는 파일 불러오기
student0
class(student0)
 
student1  = read.table(file="student1.txt", header=TRUE)             # 컬럼명이 있는 파일 불러오기
student1
 
# --  특정 구분자 파일 읽기 
student2  = read.table(file="student2.txt", sep=";", header=TRUE)
student2
 
student3 = read.table(file="student3.txt", sep=" ", header=TRUE)
student3
 
# -- NA값으로 치환 읽기
student4 = read.table(file="student3.txt", sep=" ", header=TRUE, na.strings="-")
student4
 
= student4$키
mean(h, na.rm=T)                                                     # NA를 통해 통계 처리 가능 
 
student5=read.table(file="student33.txt", sep=" "                    # NA로 변환할 문자가 여러개 일 때
                   ,header=TRUE, na.strings=c("-""&"))
student5
 
 
# ********************************************
# -- CSV 파일 읽기(read.csv()) 및 직접 선택(choose())
#    TSV 파일도 가능.
# ********************************************
# -- read.csv() 함수 이용
student6 = read.csv(file="emp.csv", na.strings="-")
student6
 
student7 = read.csv(file.choose(), sep=",", na.strings="-")          # 탐색창 열기 
student7
 
 
# ********************************************
# -- 엑셀 파일 읽기(read.xlsx()) 
# ********************************************
# -- JAVA JRE 경로 설정
#    설치 방법 : dbrang.tistory.com/1028
Sys.setenv(JAVA_HOME='C:\\Program Files\\Java\\jre1.8.0_112')
 
# -- rJava를 로드하기 때문에 rJava 패키지 설치 필요
install.packages("rJava")
library(rJava) # 로딩
 
# -- xlsx 패키지 설치(excel data 입출력 함수 제공)
install.packages("xlsx")
library(xlsx) # 로딩
 
# -- studentex.xlsx 파일 선택
studentex = read.xlsx(file.choose(),                                 # 탐색창 열기 
                      sheetIndex=1, encoding="UTF-8")
studentex
 
 
# ********************************************
# -- write.csv()를 이용한 파일 저장
# ********************************************
setwd('C:\\RProject\\HRD-Net\\R-Data\\Part-I')
getwd()
 
# -- csv 파일 쓰기 
write.csv(student5,"student555.csv", row.names=FALSE)                # 자동 행번호 미추가 
write.csv(student5,"student556.csv", row.names=TRUE)                 # 자동 행번호 추가
 
s556 = read.csv('student556.csv', header=T)
s556
 
 
# ********************************************
# -- sink() 함수를 이용한 파일 저장
# ********************************************
 
# -- 저장할 텍스트 파일명 설정(장치 오픈)
sink("student5-new1.txt")
 
# studentexcel.xlsx 파일 선택
studentx = student5     # 또는 = read.xlsx(file.choose(), sheetIndex=1, encoding="UTF-8") 
 
# -- 출력되는 값이 화면에 나타나지 않고 파일에 저장됨
studentx     
 
# -- 장치 해제
sink() 
 
 
# ********************************************
# -- write.table() 함수를 이용한 파일 저장
# ********************************************
head(student5)
 
# -- 기본옵션으로 저장(컬럼명과 행ID, 문자에 따옴표 붙음) 
write.table(student5, "s55551.txt"
 
# -- 행ID 제거하여 저장
write.table(student5, "s55552.txt", row.names=FALSE) 
 
# -- 따옴표 제거하여 저장
write.table(student5, "s55553.txt", row.names=FALSE, quote=FALSE) 
 
# -- 탭 구분자로 저장
write.table(student5, "s55554.txt", row.names=FALSE, quote=FALSE, sep="\t"
 
# -- 특정 구분자로 저장
write.table(student5, "s55555.txt", row.names=FALSE, quote=FALSE, sep="@$$@"
 
 
# ********************************************
# -- write.xlsx() 함수를 이용한 파일 저장
# ********************************************
# -- excel data 입출력 함수 제공
library(xlsx) 
 
# studentexcel.xlsx 파일 선택
st.df = read.xlsx(file.choose(), sheetIndex=1, encoding="UTF-8")
st.df
 
str(st.df)
 
write.xlsx(st.df, "studentx55551.xlsx"# excel형식으로 저장
 

cs


-- 소스 파일

emp.csv

emp.txt

emp2.csv

student.txt

student1.txt

student2.txt

student3.txt

student4.txt

studentexcel.xlsx

studentx.xlsx



반응형

+ Recent posts