15 min to read
R-Studio IO의 사용.
R-Studio의 IO를 통해 파일 입출력 제어.
R-Studio 의 IO
데이터 입출력을 위한 IO
사용 함수
이름 | 연산자 이름 | 사용법 |
---|---|---|
read.csv | read.csv | read.csv(“경로”) |
read.xlxs | read.xlxs | read.xlxs(“경로”) |
read.table | read.table | read.table(“경로”) |
파일 소스
우클릭 -> 다른이름으로 링크저장 이용해 주세요
R정형데이터처리하기.xlxs
함수 예제
# 편집기 만듬
print("edit 편집기")
[1] "edit 편집기"
df <- data.frame()
df <- edit(df) # 편집기 만듬.
df
# 열의 개수가 0이고 행의 개수가 0인 데이터 프레임입니다.
# 로컬 파일 가져올댄 read.table() 이용
# file="경로명/파일명" sep="컬럼 구분자"(공백이거나 탭인 경우 안적어도됨.), header="T 또는 F"(없으면 V로 보임임)
jumsu <- read.table(file="jumsu.txt", header = T)
# jumsu <- read.table(file="jumsu.txt", header = T, col.names = c("이름", "국어", "영어", "수학"))
jumsu
# 학번 국어 수학 영어
# 1 1 8 7 2
# 2 2 6 5 7
# 3 3 9 4 9
# 4 4 4 5 7
# 5 5 5 8 9
str(jumsu)
# 'data.frame': 5 obs. of 4 variables:
# $ 학번: int 1 2 3 4 5
# $ 국어: int 8 6 9 4 5
# $ 수학: int 7 5 4 5 8
# $ 영어: int 2 7 9 7 9
# colnames(jumsu) <- c("이름", "국어", "영어", "수학") # 열 이름 바꿈
#파생 컬럼 만들기 : 코딩 변경(re-coding):리코딩
jumsu$총점 <- jumsu$국어+jumsu$수학+jumsu$영어
jumsu
# 학번 국어 수학 영어 총점
# 1 1 8 7 2 17
# 2 2 6 5 7 18
# 3 3 9 4 9 22
# 4 4 4 5 7 16
# 5 5 5 8 9 22
# 평균 컬럼은 소숫점 2자리
jumsu$평균 <- round(jumsu$총점 / 3, 2)
jumsu
# 학번 국어 수학 영어 총점 평균
# 1 1 8 7 2 17 5.67
# 2 2 6 5 7 18 6.00
# 3 3 9 4 9 22 7.33
# 4 4 4 5 7 16 5.33
# 5 5 5 8 9 22 7.33
jumsu$"합격_여부" <- ifelse(jumsu$평균>=6.0, "합격", "불합격")
# 행이름 바꾸기
row.names(jumsu) <- c("kang", "hong", "soo", "shin", "lee")
jumsu
# 학번 국어 수학 영어 총점 평균 합격_여부
# kang 1 8 7 2 17 5.67 불합격
# hong 2 6 5 7 18 6.00 합격
# soo 3 9 4 9 22 7.33 합격
# shin 4 4 5 7 16 5.33 불합격
# lee 5 5 8 9 22 7.33 합격
# quote:출력 데이터파일에 따옴표 씌울건지 안씌울건지(문자만)
write.csv(jumsu, "result1.csv", row.names = T, quote = T)
member01 <- read.table(file = "member01.txt", header = F)
member01
# V1 V2 V3 V4
# 1 100 홍길동 170 60
# 2 200 이승엽 180 65
# 3 300 김정식 185 70
# 4 400 박남정 180 75
# getter
colnames(member01)
[1] "V1" "V2" "V3" "V4"
rownames(member01)
[1] "1" "2" "3" "4"
# setter
colnames(member01) <- c("번호", "이름", "키", "몸무게")
rownames(member01) <- c("hong", "lee", "kim", "park")
member01
# 번호 이름 키 몸무게
# hong 100 홍길동 170 60
# lee 200 이승엽 180 65
# kim 300 김정식 185 70
# park 400 박남정 180 75
# 테이블로 불러오고 구분자는 탭 시퀀스
member02 <- read.table(file="member02.txt", sep='\t', header = T)
member02
# 번호 이름 키 몸무게
# 1 100 홍길동 170 60
# 2 200 이승엽 180 65
# 3 300 김정식 185 70
# 4 400 박남정 180 75
# file chooser 사용.
# 아무 파일이나 불러와보기.
mydata <- read.table(file.choose(), header = T)
Error in file.choose() : file choice cancelled
mydata
# 3번 4번 파일 열기
member03 <- read.table(file = "member03.txt", sep=';', header = T)
member03
# 번호 이름 키 몸무게
# 1 100 홍길동 170 60
# 2 200 이승엽 180 65
# 3 300 김정식 185 70
# 4 400 박남정 180 75
# 없는 값 표시를 NA 로 바꿔주기
member04 <- read.table(file = "member04.txt", header = T, na.strings = "-")
member04
# 번호 이름 키 몸무게
# 1 100 홍길동 NA 60
# 2 200 이승엽 180 65
# 3 300 김정식 185 NA
# 4 400 박남정 180 75
# 데이타 프레임 만들기
name <- c("김유신", "이순신")
kor <- c(10, 20)
eng <- c(30, 30)
math <- c(50, 60)
sungjuk <- data.frame(name, kor, eng, math)
sungjuk
name kor eng math
# 1 김유신 10 30 50
# 2 이순신 20 30 60
data <- c(10, 20)
data
[1] 10 20
# java의 log와 같음
sink("abcd.txt")
sungjuk
data
sink()
vegetable <- read.table("vegetable.txt", header = T)
vegetable
# no name price qty
# 1 1 감자 300 5
# 2 2 고구마 1100 2
# 3 3 오이 1100 7
# 4 4 가지 100 9
# 주석 제거 해주기.
# colname 변수로 컬럼 벡터 만들고 테이블에 넣음.
# col.names = colname 부분
colname <- c("no", "name", "price", "qty")
vegetable2 <- read.table("vegetable2.txt", header = F, col.names = colname)
vegetable2
# no name price qty
# 1 1 감자 300 6
# 2 2 고구마 1100 2
# 3 3 오이 1100 7
# 4 4 가지 100 9
# skip옵션
# 주위 : 주석도 skip 옵션에 행으로 포함
colname <- c("no", "name", "price", "qty")
vegetable2 <- read.table("vegetable2.txt", header = F, col.names = colname, skip = 2)
vegetable2
# no name price qty
# 1 2 고구마 1100 2
# 2 3 오이 1100 7
# 3 4 가지 100 9
# 출력 행을 제한 할 수 있다.
# nrows
colname <- c("no", "name", "price", "qty")
vegetable2 <- read.table("vegetable2.txt", header = F, col.names = colname, nrows = 2)
vegetable2
# no name price qty
# 1 1 감자 300 6
# 2 2 고구마 1100 2
# R정형 데이타 처리하기.xlsx
# xlsx 가져오기
# install.packages("xlsx")
library(xlsx)
# rjava 에러뜨면 Sys.setenv(JAVA_HOME = "path") 설정후
# library(rJava) 로 다시 불러오기
myEncoding <- "UTF-8"
filename <- "R정형데이터처리하기.xlsx"
income <- read.xlsx(file=filename, sheetIndex = 1, encoding = myEncoding)
income
# 수입업체 식품명 수입국 수입월 수입량.t. 수입가.t. 판매가.t.
# 1 한종무역 커피 에티오피아 5월 7000 22650000 31710000
# 2 대망식품 원당(설탕) 인도 6월 12000 15850000 22190000
# 3 세계식품 코코아 코트디부아르 5월 8000 17500000 24500000
# 4 망오통상 오렌지주스 미국 6월 10000 16800000 23520000
# 5 쿠키코리아 쿠키 이탈리아 5월 6000 26500000 37100000
# 6 유기농식품 견과류 터키 6월 10000 17000000 23800000
# 7 슈가무역 사탕 영국 5월 5000 19740000 27636000
# 8 전문통상 초콜릿 스위스 5월 8000 23050000 32270000
# 9 맛나식품 건과일 태국 5월 7000 18500000 25900000
business <- read.xlsx(file=filename, sheetIndex = 2, encoding = myEncoding)
business
# 사원명 출장지역 출장기간 부서 성별 교통비 식비 숙박비 부대비용
# 1 김연다 대전 7일 총무부 여자 60000 126000 280000 84000
# 2 서은손 부산 5일 총무부 여자 130000 90000 200000 60000
# 3 문상희 광주 10일 영업부 여자 100000 180000 400000 120000
# 4 은정나 목포 3일 영업부 여자 110000 54000 120000 36000
# 5 신나면 대전 6일 전산부 여자 110000 108000 240000 72000
# 6 강희동 대전 5일 전산부 남자 120000 90000 200000 60000
# 7 권노동 부산 8일 총무부 남자 120000 144000 320000 96000
# 8 장수학 목포 4일 총무부 남자 100000 72000 160000 48000
# 9 백두산 광주 7일 총무부 남자 50000 126000 280000 84000
# 10 한국민 대전 6일 영업부 남자 80000 108000 240000 72000
# 행만 골라서 출력 하기.
sheets <- seq(3, 5)
total_df <- data.frame()
# 3 4 5 시트에 있는 행을 전부 데이타 프레임에 전부 불러옴
for(sheet in sheets) {
+ dframe <- read.xlsx(file=filename, sheetIndex = sheet, encoding = myEncoding)
+ dframe$"분기" <- paste(sheet-2, "사분기", sep="")
+ total_df <- rbind(total_df, dframe)
+ }
total_df
# 제품명 X1일생산량 생산일수 총생산량 불량품 출고량 분기
# 1 미니오븐 100 60 6000 24 5976 1사분기
# 2 전기밥솥 150 60 9000 36 8964 1사분기
# 3 믹서기 200 60 12000 48 11952 1사분기
# 4 전자레인지 120 60 7200 29 7171 1사분기
# 5 미니냉장고 80 60 4800 19 4781 1사분기
# 6 가습기 200 60 12000 48 11952 1사분기
# 7 선풍기 180 60 10800 43 10757 1사분기
# 8 미니오븐 100 64 6400 26 6374 2사분기
# 9 전기밥솥 150 64 9600 39 9561 2사분기
# 10 믹서기 200 64 12800 52 12748 2사분기
# 11 전자레인지 120 64 7680 31 7649 2사분기
# 12 미니냉장고 80 64 5120 21 5099 2사분기
# 13 가습기 200 64 12800 52 12748 2사분기
# 14 선풍기 180 64 11520 47 11473 2사분기
# 15 미니오븐 100 62 6200 22 6178 3사분기
# 16 전기밥솥 150 62 9300 33 9267 3사분기
# 17 믹서기 200 62 12400 43 12357 3사분기
# 18 전자레인지 120 62 7440 26 7414 3사분기
# 19 미니냉장고 80 62 4960 17 4943 3사분기
# 20 가습기 200 62 12400 43 12357 3사분기
# 21 선풍기 180 62 11160 39 11121 3사분기
# income2 파일, 시트번호, 인코딩
income2 <- read.xlsx(file=filename, sheetIndex=1, encoding = myEncoding, rowIndex = c(2, 3), colIndex = c(1, 3:4), header = F)
# income2
# X1 X3 X4
# 1 한종무역 에티오피아 5월
# 2 대망식품 인도 6월
Comments