R 데이터 결합함수(cbind, rbind, merge)
분석시 데이터의 프레임을 결합하는 경우가 꽤 발생한다.
R은 이 기능을
충분히 제공하고 있으며 이 함수에 대해서 정리를 한다.
cbind(A,B)
열결합을 나타내는 함수, cbind(…, deparse.level = 1) , deparse.level : 컬럼명 부여, 1 또는 2 컬럼명 부여
> m <- cbind(1, 1:7) # the '1'은 recycled
> cbind(m, 8:14)
## [,1] [,2] [,3]
## [1,] 1 1 8
## [2,] 1 2 9
## [3,] 1 3 10
## [4,] 1 4 11
## [5,] 1 5 12
## [6,] 1 6 13
## [7,] 1 7 14
> cbind(m, 8:14)[, c(1, 3, 2)] # 컬럼 순서를 1,3,2로 조정
## [,1] [,2] [,3]
## [1,] 1 8 1
## [2,] 1 9 2
## [3,] 1 10 3
## [4,] 1 11 4
## [5,] 1 12 5
## [6,] 1 13 6
## [7,] 1 14 7
> cbind(m, "컬럼_5" = 8:14) #컬럼명 부여
## 컬럼_5
## [1,] 1 1 8
## [2,] 1 2 9
## [3,] 1 3 10
## [4,] 1 4 11
## [5,] 1 5 12
## [6,] 1 6 13
## [7,] 1 7 14
rbind(A,B)
행결합을 나타내는 함수, rbind(…, deparse.level = 1) , deparse.level : 행명 부여 주로 데이터를 추가하는 데 사용함
> dd = 10
> rbind(1:4, c = 2, "a++" = 10, dd, deparse.level = 0)
## [,1] [,2] [,3] [,4]
## 1 2 3 4
## c 2 2 2 2
## a++ 10 10 10 10
## 10 10 10 10
merge(A,B, by=‘key’)
key 기준에 따라 merge 한다.
> authors <- data.frame(
## I(*) : use character columns of names to get sensible sort order
surname = I(c("Tukey", "Venables", "Tierney", "Ripley", "McNeil")),
nationality = c("US", "Australia", "US", "UK", "Australia"),
deceased = c("yes", rep("no", 4)))
> authorN <- within(authors, { name <- surname; rm(surname) })
> books <- data.frame(
name = I(c("Tukey", "Venables", "Tierney",
"Ripley", "Ripley", "McNeil", "R Core")),
title = c("Exploratory Data Analysis",
"Modern Applied Statistics ...",
"LISP-STAT",
"Spatial Statistics", "Stochastic Simulation",
"Interactive Data Analysis",
"An Introduction to R"),
other.author = c(NA, "Ripley", NA, NA, NA, NA,
"Venables & Smith"))
> merge(authorN, books) # name 기준으로 데이터 프레임이 머지됨
## name nationality deceased title other.author
## 1 McNeil Australia no Interactive Data Analysis <NA>
## 2 Ripley UK no Spatial Statistics <NA>
## 3 Ripley UK no Stochastic Simulation <NA>
## 4 Tierney US no LISP-STAT <NA>
## 5 Tukey US yes Exploratory Data Analysis <NA>
## 6 Venables Australia no Modern Applied Statistics ... Ripley
> merge(authors, books, by.x = "surname", by.y = "name") # 2개의 데이터프레임에서 컬럼명이 다른경우
## surname nationality deceased title other.author
## 1 McNeil Australia no Interactive Data Analysis <NA>
## 2 Ripley UK no Spatial Statistics <NA>
## 3 Ripley UK no Stochastic Simulation <NA>
## 4 Tierney US no LISP-STAT <NA>
## 5 Tukey US yes Exploratory Data Analysis <NA>
## 6 Venables Australia no Modern Applied Statistics ... Ripley
댓글남기기