생초보 시작

기본 설정

R을 시작하게 되면, 처음으로 작업 디렉토리를 설정해줘야합니다. 먼저, D 드라이브에 ‘Rclass’라는 폴더를 만들어줍니다. 되도록이면, 한글이름을 사용하지 말고, 단순한 경로를 사용합니다. (바탕화면 노노..) 설정 방법은 ’setwd(“디렉토리”)’ 입니다.

setwd("~/Rclass/")

설정된 작업 디렉토리를 확인하는 방법은 ‘getwd()’ 입니다.

getwd()
## [1] "D:/OneDrive - hufs.ac.kr/Workspace_hufs/Rclass/Ehwa_240227"

위와 같이 “D:/Rclass/”가 작업 디렉토리로 설정된 것을 볼 수 있습니다.

다음으로는 분석에 필요한 라이브러리를 설치해줍니다. 라이브러리의 종류는 수백가지라, 각각의 목적에 맞는 패키지를 검색 후 설치해야합니다. 대기과학에서 주로 사용한다고 말하기는 힘들지만, 제가 기본으로 불러오는 패키지는 lubridate와 ‘plyr’ 입니다.

install.packages("lubridate")
install.packages("plyr")

’lubridate’는 시계열 자료를 다루는데 매우 유용하며, ’plyr’은 자료의 반올림, 내림, 버림을 하는 데 유용합니다.

앞서 ‘install.packages’를 실행하여 해당 패키지를 설치했다면, 앞으로는 ’library’ 명령어를 이용해서 패키지를 불러오면 됩니다.

library("lubridate")
## 
## 다음의 패키지를 부착합니다: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library("plyr")

오류 메세지 없이 불러왔다면, 이제 문제 없이 해당 패키지를 사용할 수 있습니다.

외부 데이터 읽어오기

텍스트 데이터

  • 텍스트 데이터는 데이터와 데이터를 구분하기 위해서 공백(blank), 콤마(comma), 탭(tab)와 같은 구분자(separator)를 사용한다. 텍스트 데이터를 R에서 읽어오기 위해서는 read.table() 함수를 사용하며, 그 사용 방법은 다음과 같다.
argument 설명
file R에서 읽어올 외부 데이터가 있는 파일의 위치(경로)와 파일명(확장자 포함)을 문자형으로 지정한다.
header 논리형으로 TRUE를 지정하면 외부 데이터에 있는 변수명을 R 데이터에서도 동일하게 사용하며, FALSE를 지정하면 외부 데이터의 변수명을 사용하지 않고 R에서 자체적으로 변수명을 지정한다. 그 이름은 “V1”, “V2” 식으로 된다.
sep 구분자로 문자형 형태로 지정한다. 공백이면 ” “, 콤마이면”,“, 탭이면”\t”
stringsAsFactors 문자형 데이터를 요인(factor)으로 자동으로 변경할 지를 설정한다. FALSE를 지정하면 문자형 데이터를 요인으로 변경하지 않고 문자형으로 읽어들인다.
na.strings 데이터에 결측치가 있거나 결측치로 지정할 내용을 문자형으로 지정한다
nrow 읽어들일 행의 갯수를 지정
skip 읽지 않고 넘길 행의 갯수
fileEncoding encoding 타입 윈도우는 WINDOWS-1252, 리눅스/맥은 UTF-8

CSV 데이터

DAT = read.csv(file = “파일명”, header = TRUE)

엑셀 데이터

install.packages("readxl")
library("readxl")
argument 설명
path R에서 읽어올 외부 데이터가 있는 파일의 위치(경로)와 파일명(확장자 포함)을 문자형으로 지정한다.
sheet 엑셀 파일의 있는 시트(sheet) 중에서 어떤 시트인지를 지정하는 것으로 시트명을 알고 있으면 문자형으로 지정하며, 시트의 위치(index)를 알면 수치형으로 지정하면 된다.
col_names 논리형으로 엑셀에 있는 변수명을 사용할 지를 의미한다. TRUE이면 엑셀에 있는 변수명을 사용한다
DAT = read_excel(path = “파일명”, sheet = “Sheet1”, col_names = TRUE)
DAT = read_excel(path = “파일명”, sheet = “Sheet1”, col_names = TRUE)

본 강좌에서는 sample_data.xlsx를 사용할 예정입니다 (파일명이 빈 공백등은 되도록 노노..).

  • 본 수업에 사용되는 입력자료는 아래 링크에서 다운받을 수 있습니다. sample_data.xlsx
library("readxl")
aero = read_excel(path =  "sample_data.xlsx", sheet = "Sheet1", col_names = TRUE)#, fileEncoding = "WINDOWS-1252")

데이터 핸들링

설명 방법 사용법
행의 개수 nrow(데이터명) nrow(aero)
열의 개수 ncol(데이터명) ncol(aero)
행의 이름 row.names(데이터명) row.names(aero)
열의 이름 colnames(데이터명) colnames(aero)
행과 열이 갯수 dim(데이터명) dim(aero)
데이터의 구조 str(데이터명) str(aero)
  • Tip
paste("R", 1:53940, sep = "")

데이터 추출하기

  • 데이터의 일부 보기
  • head(데이터명), tail(데이터명)
head(aero)
##                  Date Temperature Wind direction Wind speed PM2.5       OC
## 1 2020-12-15 00:00:00       -12.3           21.5        0.2    10 1.944157
## 2 2020-12-15 01:00:00       -13.1          118.1        0.1    12 2.048968
## 3 2020-12-15 02:00:00       -13.6          125.1        0.3    13 1.805130
## 4 2020-12-15 03:00:00       -12.4           30.6        0.6    14 2.083666
## 5 2020-12-15 04:00:00       -13.7           95.3        0.5    13 1.766200
## 6 2020-12-15 05:00:00       -12.2          323.0        0.7    11 1.400701
##          EC   SO42-    NO3-     Cl-     Na+    NH4+      K+    Mg2+    Ca2+
## 1 0.6255070 1.40232 1.39549 0.23159 0.03549 0.85731 0.03115 0.07053 0.01698
## 2 0.6197119 1.45922 1.49809 0.22669 0.03399 0.89731 0.02605 0.05833 0.01718
## 3 0.5682204 1.48532 1.54819 0.22779 0.03159 0.92621 0.03265 0.04803 0.01488
## 4 0.5837869 1.54722 1.53099 0.24299 0.03029 0.91341 0.03495 0.04203 0.01028
## 5 0.5339275 1.45522 1.34259 0.25099 0.02999 0.78641 0.03495 0.02513 0.01728
## 6 0.4581114 1.39652 1.17579 0.28119 0.02659 0.74611 0.03425 0.01333 0.01998
head(aero, n = 3)
##                  Date Temperature Wind direction Wind speed PM2.5       OC
## 1 2020-12-15 00:00:00       -12.3           21.5        0.2    10 1.944157
## 2 2020-12-15 01:00:00       -13.1          118.1        0.1    12 2.048968
## 3 2020-12-15 02:00:00       -13.6          125.1        0.3    13 1.805130
##          EC   SO42-    NO3-     Cl-     Na+    NH4+      K+    Mg2+    Ca2+
## 1 0.6255070 1.40232 1.39549 0.23159 0.03549 0.85731 0.03115 0.07053 0.01698
## 2 0.6197119 1.45922 1.49809 0.22669 0.03399 0.89731 0.02605 0.05833 0.01718
## 3 0.5682204 1.48532 1.54819 0.22779 0.03159 0.92621 0.03265 0.04803 0.01488
tail(aero)
##                    Date Temperature Wind direction Wind speed PM2.5       OC
## 763 2021-01-15 18:00:00         5.1          297.0        2.1    59 7.341742
## 764 2021-01-15 19:00:00         3.4          249.2        0.9    47 6.241189
## 765 2021-01-15 20:00:00         2.5          353.6        0.6    44 5.638757
## 766 2021-01-15 21:00:00         1.6          238.3        0.9    42 5.481069
## 767 2021-01-15 22:00:00        -0.3          336.9        0.6    35 4.791733
## 768 2021-01-15 23:00:00        -0.5          317.7        0.8    39 5.795961
##           EC   SO42-     NO3-     Cl-     Na+    NH4+      K+    Mg2+    Ca2+
## 763 2.089880 3.66652 19.95149 1.93789 0.47189 8.24251 0.15435 0.09103 0.12778
## 764 1.609157 4.93662 18.84049 1.71229 0.32849 8.42511 0.16545 0.07553 0.11468
## 765 1.279726 5.04612 13.01529 1.15939 0.24319 6.20201 0.12595 0.07133 0.12818
## 766 1.285806 4.56892  9.08269 0.67019 0.11739 4.66061 0.10895 0.05663 0.14198
## 767 1.184745 4.14502  7.94549 0.73569 0.14109 3.97071 0.08135 0.06813 0.13818
## 768 1.371843 4.38362  5.56269 0.64329 0.12409 3.31881 0.11415 0.07043 0.10958
tail(aero, n = 3)
##                    Date Temperature Wind direction Wind speed PM2.5       OC
## 766 2021-01-15 21:00:00         1.6          238.3        0.9    42 5.481069
## 767 2021-01-15 22:00:00        -0.3          336.9        0.6    35 4.791733
## 768 2021-01-15 23:00:00        -0.5          317.7        0.8    39 5.795961
##           EC   SO42-    NO3-     Cl-     Na+    NH4+      K+    Mg2+    Ca2+
## 766 1.285806 4.56892 9.08269 0.67019 0.11739 4.66061 0.10895 0.05663 0.14198
## 767 1.184745 4.14502 7.94549 0.73569 0.14109 3.97071 0.08135 0.06813 0.13818
## 768 1.371843 4.38362 5.56269 0.64329 0.12409 3.31881 0.11415 0.07043 0.10958
  • 열 추출하기
aero[1:10, 1] # aero 첫번째 열 중 1-10행까지만 벡터 형태로 출력
##  [1] "2020-12-15 00:00:00 UTC" "2020-12-15 01:00:00 UTC"
##  [3] "2020-12-15 02:00:00 UTC" "2020-12-15 03:00:00 UTC"
##  [5] "2020-12-15 04:00:00 UTC" "2020-12-15 05:00:00 UTC"
##  [7] "2020-12-15 06:00:00 UTC" "2020-12-15 07:00:00 UTC"
##  [9] "2020-12-15 08:00:00 UTC" "2020-12-15 09:00:00 UTC"
aero[1:10, 1, drop=FALSE] # 데이터 프레임 형태로 출력
##                   Date
## 1  2020-12-15 00:00:00
## 2  2020-12-15 01:00:00
## 3  2020-12-15 02:00:00
## 4  2020-12-15 03:00:00
## 5  2020-12-15 04:00:00
## 6  2020-12-15 05:00:00
## 7  2020-12-15 06:00:00
## 8  2020-12-15 07:00:00
## 9  2020-12-15 08:00:00
## 10 2020-12-15 09:00:00
aero[1:10 , c(1, 3, 4)] # 1, 3, 4번째 열만 출력
##                   Date Wind direction Wind speed
## 1  2020-12-15 00:00:00           21.5        0.2
## 2  2020-12-15 01:00:00          118.1        0.1
## 3  2020-12-15 02:00:00          125.1        0.3
## 4  2020-12-15 03:00:00           30.6        0.6
## 5  2020-12-15 04:00:00           95.3        0.5
## 6  2020-12-15 05:00:00          323.0        0.7
## 7  2020-12-15 06:00:00           77.4        0.2
## 8  2020-12-15 07:00:00          104.3        0.5
## 9  2020-12-15 08:00:00           13.9        0.0
## 10 2020-12-15 09:00:00          126.7        0.2
aero[1:10 , 2:5] # 2부터 다섯번째 열까지 출력
##    Temperature Wind direction Wind speed PM2.5
## 1        -12.3           21.5        0.2    10
## 2        -13.1          118.1        0.1    12
## 3        -13.6          125.1        0.3    13
## 4        -12.4           30.6        0.6    14
## 5        -13.7           95.3        0.5    13
## 6        -12.2          323.0        0.7    11
## 7        -12.8           77.4        0.2     9
## 8        -14.1          104.3        0.5     8
## 9        -14.9           13.9        0.0     8
## 10       -13.4          126.7        0.2     9
aero[1:10 , seq(from = 1, to = ncol(aero), by = 2)] #첫번째 열부터 마지막 열까지 홀수만 출력
##                   Date Wind direction PM2.5        EC    NO3-     Na+      K+
## 1  2020-12-15 00:00:00           21.5    10 0.6255070 1.39549 0.03549 0.03115
## 2  2020-12-15 01:00:00          118.1    12 0.6197119 1.49809 0.03399 0.02605
## 3  2020-12-15 02:00:00          125.1    13 0.5682204 1.54819 0.03159 0.03265
## 4  2020-12-15 03:00:00           30.6    14 0.5837869 1.53099 0.03029 0.03495
## 5  2020-12-15 04:00:00           95.3    13 0.5339275 1.34259 0.02999 0.03495
## 6  2020-12-15 05:00:00          323.0    11 0.4581114 1.17579 0.02659 0.03425
## 7  2020-12-15 06:00:00           77.4     9 0.3653754 0.94399 0.01959 0.03385
## 8  2020-12-15 07:00:00          104.3     8 0.4000881 0.79839 0.01839 0.02505
## 9  2020-12-15 08:00:00           13.9     8 0.4107523 0.83159 0.01929 0.02015
## 10 2020-12-15 09:00:00          126.7     9 0.5356505 0.89959 0.01999 0.01815
##       Ca2+
## 1  0.01698
## 2  0.01718
## 3  0.01488
## 4  0.01028
## 5  0.01728
## 6  0.01998
## 7  0.02048
## 8  0.02018
## 9  0.02758
## 10 0.02538
aero[1:10 , c("PM2.5", "OC", "EC")] # 다음과 같은 열 이름만 출력력
##    PM2.5        OC        EC
## 1     10 1.9441572 0.6255070
## 2     12 2.0489682 0.6197119
## 3     13 1.8051302 0.5682204
## 4     14 2.0836662 0.5837869
## 5     13 1.7662002 0.5339275
## 6     11 1.4007012 0.4581114
## 7      9 0.8442722 0.3653754
## 8      8 0.9623322 0.4000881
## 9      8 0.9659122 0.4107523
## 10     9 1.3125702 0.5356505
  • grep: 변수명 중에서 특정 문자로 시작하거나 끝나거나 포함하고 있는 것을 추출할 때
argument 설명
pattern 특정한 문자로 시작하거나 끝나거나 포함하고 있는지를 문자형으로 표현한다. a로 시작하는 것은 “^a”, a로 끝나는 것은 “a$”, a를 포함하는 것은 “a”로 지정한다.x 문자형 벡터를 지정한다.
value 논리형으로 TRUE으로 pattern를 만족하는 벡터의 값을 반환하고,FALSE를 지정하면 pattern를 만족하는 벡터의 위치(index)를 반환한다.
grep("O", colnames(aero), value = TRUE) # 헤더이름 중 O가 들어가는 이름
## [1] "OC"    "SO42-" "NO3-"
grep("O", colnames(aero), value = FALSE) # 헤더이름 중 O가 들어가는 순서 
## [1] 6 8 9
aero[1:10, grep("O", colnames(aero), value = TRUE)] # 헤더이름 중 O가 들어가는 이름 중 10열까지 출력
##           OC   SO42-    NO3-
## 1  1.9441572 1.40232 1.39549
## 2  2.0489682 1.45922 1.49809
## 3  1.8051302 1.48532 1.54819
## 4  2.0836662 1.54722 1.53099
## 5  1.7662002 1.45522 1.34259
## 6  1.4007012 1.39652 1.17579
## 7  0.8442722 1.27212 0.94399
## 8  0.9623322 1.19452 0.79839
## 9  0.9659122 1.18652 0.83159
## 10 1.3125702 1.13932 0.89959
  • substr: 문자 중에서 일부를 추출. 엑셀의 mid 함수와 동일
argument 설명
x 문자형 벡터를 지정한다.
start 추출할 문자의 첫 번째 위치를 정수형으로 지정.
stop 추출한 문자의 마지막 위치를 정수형으로 지정.
substr(colnames(aero), start = 1, stop = 2) # 변수명 중에서 처음 두 개의 문자를 추출
##  [1] "Da" "Te" "Wi" "Wi" "PM" "OC" "EC" "SO" "NO" "Cl" "Na" "NH" "K+" "Mg" "Ca"
substr(colnames(aero), 1, 2) # 변수명 중에서 처음 두 개의 문자를 추출
##  [1] "Da" "Te" "Wi" "Wi" "PM" "OC" "EC" "SO" "NO" "Cl" "Na" "NH" "K+" "Mg" "Ca"
aero[1:10 , substr(colnames(aero), start = 1, stop = 2) == "SO"] # 변수명 중에서 처음 두 개의 문자를 추출한 것이 “SO”와같은 열을 추출 (1-10행)
##  [1] 1.40232 1.45922 1.48532 1.54722 1.45522 1.39652 1.27212 1.19452 1.18652
## [10] 1.13932

원하는 케이스의 행 추출

엑셀의 필터링 기능
  • aero 데이터에서 풍향 자료를 기준으로 북풍/남풍으로 구분해 볼 수 있습니다. 즉 풍향 (0-360도)이 270보다 크거나 90보다 작으면 북풍, 그렇지 않으면 남풍일 것입니다.
  • 우선 모든 자료를 남풍 (South)로 할당해준 후 북풍 사례만을 골라서 북풍 (North)로 바꿔줍니다.
aero$main.wd = "North"
aero[is.na(aero$`Wind direction`) == F & aero$`Wind direction` >=  90 & aero$`Wind direction` <  270, "main.wd"] = "South"

south = aero[aero$main.wd == "South" , ] # 풍상풍하열 값 중 'u'만 추출하여 upwind에 할당
north = aero[aero$main.wd == "North" , ]
  • factor를 이용하면 그룹에 따른 boxplot을 그릴 수 있다.
boxplot(aero$PM2.5 ~ aero$main.wd) #factor를 이용한 boxplot

* 이와 마찬가지로 원하는 조건에 따라 추출 가능

aero[aero$PM2.5 >= 5, ] # Organic이 5 ug m-3 이상인 자료
aero[(aero$main.wd == 'North') & (aero$PM2.5 >= 35), ] # Organic이 5 ug m-3 이상이고 풍상지역인 자료
aero[(aero$main.wd == 'South') & (aero$PM2.5 >= 35), ] # Organic이 5 ug m-3 이상이거나 풍상지역인 자료
aero[(aero$main.wd == 'South') | (aero$PM2.5 >= 35), 2:3] # Organic이 5 ug m-3 이상이거나 풍상지역인 자료 중 2번째, 3번째 컬럼
aero[(aero$main.wd == 'South') | (aero$PM2.5 >= 355), c("OC", "EC")] # Organic이 5 ug m-3 이상이거나 풍상지역인 자료 중 "ORG", "SO4" 컬럼

시계열 자료 처리

  • aero의 첫 번째 행 (Date)의 형식은 모두 YYYY-mm-dd HH:MI:SS의 형태임
  • 엑셀로 부를땐, 시간 파일로 잘 읽히는 경우가 많음…
aero$Date[1]
  • 위 형태는 R에서 시간 형태가 아닌 텍스트 형태로 인식했기 때문에, ‘lubridate’ 라이브러리의 ‘as.POSIXct()’ 한수를 이용하여 시간 형태로 변경시켜줘야 함.
argument 설명
x 변경할 변수
tz 사용자가 원하는 time zone. 미지정 시 “GMT”. 한국은 “Asia/Seoul”.
aero$Time = as.POSIXct(aero$Date, tz = "Asia/Seoul")
aero$Time[1]
## [1] "2020-12-15 09:00:00 KST"
  • 뒤에 KST가 붙은 것을 알 수 있다. 이제 R은 해당 텍스트를 시간형식으로 인식한다.
  • (엑셀로 불러들인 경우) 여전히 UTC이다. 이럴 경우 as.POSIXlt()를 사용하여 KST로 바꿔준다.
  • 주의할 점은 UTC -> KST로 가면서 +9의 시간이 더해지기 때문에 -9 시간을 고려해주어야한다.
aero$Time = as.POSIXlt(aero$Date, tz = "Asia/Seoul")
aero$Time[1]
## [1] "2020-12-15 09:00:00 KST"
aero$Time = aero$Time - hours(9)
aero$Time[1]
## [1] "2020-12-15 KST"
  • meteo 자료 부르기
meteo = read_excel(path =  "sample_data.xlsx", sheet = "Sheet2", col_names = TRUE)#, fileEncoding = "WINDOWS-1252")
  • meteo 자료 형태 보기
str(meteo)
## tibble [768 × 16] (S3: tbl_df/tbl/data.frame)
##  $ Date   : POSIXct[1:768], format: "2020-12-15" "2020-12-15" ...
##  $ time   : POSIXct[1:768], format: "1899-12-31 00:00:00" "1899-12-31 01:00:00" ...
##  $ prec   : chr [1:768] "○" "○" "○" "○" ...
##  $ prec15 : chr [1:768] "0" "0" "0" "0" ...
##  $ prec60 : chr [1:768] "0" "0" "0" "0" ...
##  $ prec3h : chr [1:768] "0" "0" "0" "0" ...
##  $ prec6h : chr [1:768] "0" "0" "0" "0" ...
##  $ prec12h: chr [1:768] "0" "0" "0" "0" ...
##  $ precd  : chr [1:768] "0" "0" "0" "0" ...
##  $ temp   : chr [1:768] "-12.3" "-13.1" "-13.6" "-12.4" ...
##  $ wd     : num [1:768] 54.1 102.2 148.8 143.1 334 ...
##  $ wdd    : chr [1:768] "NE" "-" "SSE" "SE" ...
##  $ ws     : num [1:768] 0.7 0.1 0.5 0.6 0.3 0.8 0 0.1 0 0.3 ...
##  $ wd10   : num [1:768] 21.5 118.1 125.1 30.6 95.3 ...
##  $ wdd10  : chr [1:768] "NNE" "-" "SE" "NNE" ...
##  $ ws10   : num [1:768] 0.2 0.1 0.3 0.6 0.5 0.7 0.2 0.5 0 0.2 ...
  • temp, wd, wd10 (10 m 풍향)등이 숫자가 아닌 문자로 표시되어 있다. 바꿔줘야함.
meteo$temp = as.numeric(meteo$temp)
## Warning: NAs introduced by coercion
meteo$prec60 = as.numeric(meteo$prec60)
## Warning: NAs introduced by coercion
  • meteo 중 필요한 컬럼만 취하기!
meteo.slct = meteo[,c(1,2,5,10,11,13,14, 16)]
  • 시간자료로 병합하기
meteo.slct$Date[1:10]
##  [1] "2020-12-15 UTC" "2020-12-15 UTC" "2020-12-15 UTC" "2020-12-15 UTC"
##  [5] "2020-12-15 UTC" "2020-12-15 UTC" "2020-12-15 UTC" "2020-12-15 UTC"
##  [9] "2020-12-15 UTC" "2020-12-15 UTC"
meteo.slct$time[1:10]
##  [1] "1899-12-31 00:00:00 UTC" "1899-12-31 01:00:00 UTC"
##  [3] "1899-12-31 02:00:00 UTC" "1899-12-31 03:00:00 UTC"
##  [5] "1899-12-31 04:00:00 UTC" "1899-12-31 05:00:00 UTC"
##  [7] "1899-12-31 06:00:00 UTC" "1899-12-31 07:00:00 UTC"
##  [9] "1899-12-31 08:00:00 UTC" "1899-12-31 09:00:00 UTC"
meteo.slct$Time = meteo.slct$Date + hours(hour(meteo.slct$time))

meteo.slct$Time = as.POSIXlt(meteo.slct$Time, tz = "Asia/Seoul")
meteo.slct$Time[1]
## [1] "2020-12-15 09:00:00 KST"
meteo.slct$Time = meteo.slct$Time - hours(9)
meteo.slct$Time[1]
## [1] "2020-12-15 KST"
  • aero와 meteo 자료 합치기 (merge 함수 사용; 엑셀의 vlookup): 기준이 되는 열을 지정후 두 자료를 병합. 엑셀과 달리 기준이 되는 열을 여러개 지정가능함.
argument 설명
x, y 합칠 데이터 셋
by 기준이 될 열 이름
all 겹치지 않는 행이 존재할 시 살려둘지, 삭제할지를 정함
all.x x 데이터 셋의 겹치지 않는 행을 살려둠 (TRUE일 경우)
all.y y 데이터 셋의 겹치지 않는 행을 살려둠 (TRUE일 경우)
aero.meteo = merge(aero, meteo.slct, by = "Time", all = T) #분단위 평균의 gas와 aero 자료를 병합
  • 일평균 계산 (엑셀의 부분합): aggregate 함수를 사용하여 일평균의 부분합을 계산함.
argument 설명
x 계산할 항목
by 그룹화할 항목
FUN 계산할 함수 (mean, median, max, min, …)
na.action 자료 중에 NA가 포함되었을 시 처리 방법
d.aero = aggregate(aero.meteo[,3:25], by = list(format(aero.meteo$Time, "%Y-%m-%d")), FUN = mean, na.rm = T) # 부분합 결과를 mi.aero에 할당
## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다

## Warning in mean.default(X[[i]], ...): 인자가 수치형 또는 논리형이 아니므로 NA를
## 반환합니다
d.aero$Group.1[1]
## [1] "2020-12-15"
d.aero$Group.1 = as.POSIXct(d.aero$Group.1, tz= "Asia/Seoul") # mi.aero$Group.1을 시간형식으로 변환 as.POSIXlt 함수 사용용
d.aero$Group.1[1]
## [1] "2020-12-15 KST"

내부 데이터 저장

  • 텍스트 파일은 주로 txt 또는 csv로 저장함 (write.csv 함수 사용)
argument 설명
x 저장할 데이터 프레임
file 저장할 파일명
append 기존 파일 뒤에 병합하여 저장하는 옵션, 논리형 (T 또는 F)
sep 각 열의 구분자 (seperator)
row.names 행 이름 (주로 NA로 지정)
col.names 열 이름 (주로 지정하지 않음)
fileEncoding 파일 encoding 형식 (주로 지정하지 않음)
write.csv(file = "sample_data_dd.csv", d.aero, row.names = F) # 행번호를 없애기 위해 F를 씁니다.
write.csv(file = "sample_data.csv", aero.meteo, row.names = F) # 행번호를 없애기 위해 F를 씁니다.