프로그래밍 문법/R

csv,xlsx파일 읽고 쓰기

씩씩한 IT블로그 2020. 6. 22. 21:45
반응형

1. CSV

* 용량이 작고, xlsx파일과 달리 MS가 깔려있지 않은 (macOS,linux)환경에서도 작동가능한 파일형식.

# 별도의 패키지없이 R내장함수 사용
df_csv_exam <- read.csv("csv_exam.csv")
df_csv_exam

# 속성명 없는 csv파일 읽기 (파라미터 header 사용)
df_csv_exam_novar <- read.csv("csv_exam_novar.csv",header=F)
df_csv_exam_novar

# csv파일 쓰기
df_midterm <- data.frame(english = c(90,85,50,26),
                         math = c(99,63,84,25),
                         class = c(1,1,2,2))
df_midterm
# quote=F를하면 큰따움표 없이 저장, row.names=F를하면 인덱스없이 저장
write.csv(df_midterm,file="my_midterm.csv",quote=F, row.names=F) 

# 큰따움표로 표시된 문자를 정상적으로 읽는 기능 (파라미터 stringAsFactors)
df_midterm2 <- read.csv("my_midterm.csv",stringsAsFactors = F)
df_midterm2

 

> # 별도의 패키지없이 R내장함수 사용
> df_csv_exam <- read.csv("csv_exam.csv")

> df_csv_exam
   id class math english science
1   1     1   50      98      50
2   2     1   60      97      60
3   3     1   45      86      78
4   4     1   30      98      58
5   5     2   25      80      65
6   6     2   50      89      98
7   7     2   80      90      45
8   8     2   90      78      25
9   9     3   20      98      15
10 10     3   50      98      45
11 11     3   65      65      65
12 12     3   45      85      32
13 13     4   46      98      65
14 14     4   48      87      12
15 15     4   75      56      78
16 16     4   58      98      65
17 17     5   65      68      98
18 18     5   80      78      90
19 19     5   89      68      87
20 20     5   78      83      58

> # 속성명 없는 csv파일 읽기 (파라미터 header 사용)
> df_csv_exam_novar <- read.csv("csv_exam_novar.csv",header=F)

> df_csv_exam_novar
   V1 V2 V3 V4 V5
1   1  1 50 98 50
2   2  1 60 97 60
3   3  1 45 86 78
4   4  1 30 98 58
5   5  2 25 80 65
6   6  2 50 89 98
7   7  2 80 90 45
8   8  2 90 78 25
9   9  3 20 98 15
10 10  3 50 98 45
11 11  3 65 65 65
12 12  3 45 85 32
13 13  4 46 98 65
14 14  4 48 87 12
15 15  4 75 56 78
16 16  4 58 98 65
17 17  5 65 68 98
18 18  5 80 78 90
19 19  5 89 68 87
20 20  5 78 83 58

> # csv파일 쓰기
> df_midterm <- data.frame(english = c(90,85,50,26),
+                          math = c(99,63,84,25),
+                          class = .... [TRUNCATED] 

> df_midterm
  english math class
1      90   99     1
2      85   63     1
3      50   84     2
4      26   25     2

> # quote=F를하면 큰따움표 없이 저장, row.names=F를하면 인덱스없이 저장
> write.csv(df_midterm,file="my_midterm.csv",quote=F, row.names=F) 

> # 큰따움표로 표시된 문자를 정상적으로 읽는 기능 (파라미터 stringAsFactors)
> df_midterm2 <- read.csv("my_midterm.csv",stringsAsFactors = F)

> df_midterm2
  english math class
1      90   99     1
2      85   63     1
3      50   84     2
4      26   25     2

 

2. xslx​

* 파일을 읽기위해 패키지를 다운받아야함.

# 패키지 설치하기
install.packages("readxl")

library(readxl)

# ----경로별 파일읽기----
# 1. 같은 폴더에 있을때
# 타입을 확인하는 함수 중 대상이 자료구조일경우 class를 사용
df_exam <- read_excel("excel_exam.xlsx")
class(df_exam) #테이블형테의 데이터프레임

df_exam <- as.data.frame(read_excel("excel_exam.xlsx"))
class(df_exam) #순수한형태의 데이터프레임

# 2. 절대경로(최상위폴더(C)에서부터)로 불러오기
# 구분시 역슬러시(\)대신 슬러시쓰는것 주의(/)
df_exam2 <- as.data.frame(read_excel("C:/bigdata/excel_exam.xlsx"))

# 3. 상대경로(현재위치에서)로 불러오기
df_exam3 <- as.data.frame(read_excel("./res/excel_exam.xlsx"))
df_exam3

# ----첫행이 속성행이 아닐때 (col_names 파라미터)----
df_exam_novar <- as.data.frame(read_excel("excel_exam_novar.xlsx"))
df_exam_novar
df_exam_novar <- as.data.frame(read_excel("excel_exam_novar.xlsx",col_names=F))
df_exam_novar

# ----시트가 여러개일때 (sheet 파라미터)----
df_exam_sheet <- as.data.frame(read_excel("excel_exam_sheet.xlsx",sheet=3))
df_exam_sheet

# ----시작셀의 위치가 다를때 (range파라미터)----
# range("첫셀:마지막셀")
df_exam_startPoint <- as.data.frame(read_excel("excel_exam_sheet.xlsx",sheet=4,range="C3:G11"))
df_exam_startPoint
 
> # 패키지 설치하기
> #install.packages("readxl")
> 
> library(readxl)

> # ----경로별 파일읽기----
> # 1. 같은 폴더에 있을때
> #타입을 확인하는 함수 중 대상이 자료구조일경우 class를 사용
> df_exam <- read_excel("excel_exam.xlsx")

> class(df_exam) #테이블형테의 데이터프레임
[1] "tbl_df"     "tbl"        "data.frame"

> df_exam <- as.data.frame(read_excel("excel_exam.xlsx"))

> class(df_exam) #순수한형태의 데이터프레임
[1] "data.frame"

> # 2. 절대경로(최상위폴더(C)에서부터)로 불러오기
> # 구분시 역슬러시(\)대신 슬러시쓰는것 주의(/)
> df_exam2 <- as.data.frame(read_excel("C:/bigdata/excel_exam.xlsx"))

> # 3. 상대경로(현재위치에서)로 불러오기
> df_exam3 <- as.data.frame(read_excel("./res/excel_exam.xlsx"))

> df_exam3
   id class math english science
1   1     1   50      98      50
2   2     1   60      97      60
3   3     1   45      86      78
4   4     1   30      98      58
5   5     2   25      80      65
6   6     2   50      89      98
7   7     2   80      90      45
8   8     2   90      78      25
9   9     3   20      98      15
10 10     3   50      98      45
11 11     3   65      65      65
12 12     3   45      85      32
13 13     4   46      98      65
14 14     4   48      87      12
15 15     4   75      56      78
16 16     4   58      98      65
17 17     5   65      68      98
18 18     5   80      78      90
19 19     5   89      68      87
20 20     5   78      83      58

> # ----첫행이 속성행이 아닐때 (col_names 파라미터)----
> df_exam_novar <- as.data.frame(read_excel("excel_exam_novar.xlsx"))
New names:
* `1` -> `1...1`
* `1` -> `1...2`
* `50` -> `50...3`
* `50` -> `50...5`

> df_exam_novar
  1...1 1...2 50...3 98 50...5
1     2     1     60 97     60
2     3     2     25 80     65
3     4     2     50 89     98
4     5     3     20 98     15
5     6     3     50 98     45
6     7     4     46 98     65
7     8     4     48 87     12

> df_exam_novar <- as.data.frame(read_excel("excel_exam_novar.xlsx",col_names=F))
New names:
* `` -> ...1
* `` -> ...2
* `` -> ...3
* `` -> ...4
* `` -> ...5

> df_exam_novar
  ...1 ...2 ...3 ...4 ...5
1    1    1   50   98   50
2    2    1   60   97   60
3    3    2   25   80   65
4    4    2   50   89   98
5    5    3   20   98   15
6    6    3   50   98   45
7    7    4   46   98   65
8    8    4   48   87   12

> # ----시트가 여러개일때 (sheet 파라미터)----
> df_exam_sheet <- as.data.frame(read_excel("excel_exam_sheet.xlsx",sheet=3))

> df_exam_sheet
  id class math english science
1  1     1   50      98      50
2  2     1   60      97      60
3  3     2   25      80      65
4  4     2   50      89      98
5  5     3   20      98      15
6  6     3   50      98      45
7  7     4   46      98      65
8  8     4   48      87      12

> # ----시작셀의 위치가 다를때 (range파라미터)----
> df_exam_startPoint <- as.data.frame(read_excel("excel_exam_sheet.xlsx",sheet=4,range="C3:G11"))

> df_exam_startPoint
  id class math english science
1  1     1   50      98      50
2  2     1   60      97      60
3  3     2   25      80      65
4  4     2   50      89      98
5  5     3   20      98      15
6  6     3   50      98      45
7  7     4   46      98      65
8  8     4   48      87      12
반응형