일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- tomcat
- Sqoop
- hadoop
- SSL
- MSSQL
- 보조정렬
- JavaScript
- GIT
- SQL
- table
- NPM
- SPC
- R
- vaadin
- es6
- 공정능력
- mybatis
- Kotlin
- Python
- Express
- react
- Java
- Spring
- xPlatform
- Android
- Eclipse
- mapreduce
- plugin
- IntelliJ
- window
- Today
- Total
DBILITY
R data type array, dataframe (배열, 데이터프레임) 본문
array()함수로 생성한다.
array(data = NA, dim = length(data), dimnames = NULL) 형태로 선언하며,
data에는 벡터, dim에는 차원을 나타내는 벡터, dimnames는 행렬에서와 마찬가지로 list형태로 이름을 지정한다.
원소에 접근은 행열과 같다.
#2차원배열
> array(1:12, dim=c(4,3))
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
#2차원 배열 행,열명 포함
> x<-array(c(1:6),dim = c(2,3),dimnames = list(c('r1','r2'),c('c1','c2','c3')))
> x
c1 c2 c3
r1 1 3 5
r2 2 4 6
> str(x)
int [1:2, 1:3] 1 2 3 4 5 6
- attr(*, "dimnames")=List of 2
..$ : chr [1:2] "r1" "r2"
..$ : chr [1:3] "c1" "c2" "c3"
# 행렬 행,열명 포함- 위의 2차원배열과 동일한 결과 확인
> y<-matrix(c(1:6),nrow=2,ncol = 3,byrow = FALSE,dimnames = list(c('r1','r2'),c('c1','c2','c3')))
> str(y)
int [1:2, 1:3] 1 2 3 4 5 6
- attr(*, "dimnames")=List of 2
..$ : chr [1:2] "r1" "r2"
..$ : chr [1:3] "c1" "c2" "c3"
> y
c1 c2 c3
r1 1 3 5
r2 2 4 6
#3차원배열 익히 알다시피 행,열,면의 순서다
> x<-array(1:12, dim=c(2,2,3))
> x
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
#3면의 1행 전체열 선택
> x[1,,3]
[1] 9 11
> dim(x)
[1] 2 2 3
#선언시 행,열,면에 이름을 줄 수 있다.
> z<-array(1:12,dim=c(2,2,3) ,dimnames = list(c('r1','r2'),c('c1','c2'),c('d1','d2','d3')))
> z
, , d1
c1 c2
r1 1 3
r2 2 4
, , d2
c1 c2
r1 5 7
r2 6 8
, , d3
c1 c2
r1 9 11
r2 10 12
> z['r2','c1','d3']
[1] 10
표,그리드형태의 구조를 보니 데이터프레임을 많이 사용할 것 같다.
벡터,팩터,배열은 한가지 데이터형만 저장할 수 있느나, 데이터프레임은 리스트와 마찬가지로 혼합된 데이터형을 저장할 수 있다.
RDB에 익숙하다면 개념이 쉽게 이해된다.
행은 데이터셋(observation,관측치) , 열(features,피처)로 정의되어 있다.
문자열 벡터는 팩터로 변환된다. 생성시 stringsAsFactors옵션을 FALSE설정하면 문자열로 저장된다. 미지정시 TRUE다.
str()함수[Structure]는 데이터프레임의 구조를 표시한다.
데이터프레임은 data.frame()함수로 생성한다.
data.frame(..., row.names = NULL, check.rows = FALSE,
check.names = TRUE, fix.empty.names = TRUE,
stringsAsFactors = default.stringsAsFactors())
> df<-data.frame(x=c(1,2,3),y=c(4,5,6),z=c('a','b','c'))
> df
x y z
1 1 4 a
2 2 5 b
3 3 6 c
> str(df)
'data.frame': 3 obs. of 3 variables:
$ x: num 1 2 3
$ y: num 4 5 6
$ z: Factor w/ 3 levels "a","b","c": 1 2 3
> df<-data.frame(x=c(1,2,3),y=c(4,5,6),z=c('a','b','c'),stringsAsFactors = FALSE)
> df
x y z
1 1 4 a
2 2 5 b
3 3 6 c
> str(df)
'data.frame': 3 obs. of 3 variables:
$ x: num 1 2 3
$ y: num 4 5 6
$ z: chr "a" "b" "c"
데이터프레임내 데이터의 참조,변경은 아래와 같다.
하나의 열(features)만 참조시 반환되는 데이터타입이 벡터다.
이경우에 데이터프레임으로 반환하고 싶을때는 drop=FALSE 옵션을 사용한다.
이외에는 데이터프레임으로 반환된다.
> df<-data.frame(x=c(1,2,3),y=c(4,5,6),z=c('a','b','c'),stringsAsFactors = FALSE)
> df
x y z
1 1 4 a
2 2 5 b
3 3 6 c
> str(df)
'data.frame': 3 obs. of 3 variables:
$ x: num 1 2 3
$ y: num 4 5 6
$ z: chr "a" "b" "c"
> df$x
[1] 1 2 3
> df$x[2]
[1] 2
> df$x<-c(10,20,30)
> df$x
[1] 10 20 30
> df$y<-c(7:9)
> df$y
[1] 7 8 9
> df
x y z
1 10 7 a
2 20 8 b
3 30 9 c
#열추가 - 행의 수가 같아야 한다. stringsAsFactors=TRUE여도 string으로 추가된다.
> df$col<-c('우리나라','대한민국','평화와번영')
> df
x y z col
1 10 7 a 우리나라
2 20 8 b 대한민국
3 30 9 c 평화와번영
> x<-data.frame(1:4)
> x
X1.4
1 1
2 2
3 3
4 4
> colnames(x)<-c('col')
> x
col
1 1
2 2
3 3
4 4
> rownames(x)<-c('r1','r2','r3','r4')
> x
col
r1 1
r2 2
r3 3
r4 4
> df[1,1]
[1] 10
> df
x y z col
1 10 7 a 우리나라
2 20 8 b 대한민국
3 30 9 c 평화와번영
> df[1,4]
[1] "우리나라"
> df[1,'col']
[1] "우리나라"
> df[c(1,3),4]
[1] "우리나라" "평화와번영"
> df[-1,-3]
x y col
2 20 8 대한민국
3 30 9 평화와번영
> df[-1,-4]
x y z
2 20 8 b
3 30 9 c
> df[-c(1,3),]
x y z col
2 20 8 b 대한민국
> df
x y z col
1 10 7 a 우리나라
2 20 8 b 대한민국
3 30 9 c 평화와번영
> df[,names(df) %in% c('x','col')]
x col
1 10 우리나라
2 20 대한민국
3 30 평화와번영
> df[,!names(df) %in% c('x','col')]
y z
1 7 a
2 8 b
3 9 c
> df[,4]
[1] "우리나라" "대한민국" "평화와번영"
> str(df[,4])
chr [1:3] "우리나라" "대한민국" "평화와번영"
> str(df[,4,drop=FALSE])
'data.frame': 3 obs. of 1 variable:
$ col: chr "우리나라" "대한민국" "평화와번영"
'statistics > R' 카테고리의 다른 글
R arithmetic operation and deal with NA (Not Assign-missing data) (0) | 2018.11.23 |
---|---|
R control statements ( 제어문 ) (0) | 2018.11.23 |
R type casting ( 데이터 형 변환 ) (0) | 2018.11.23 |
R data type array (행렬) (0) | 2018.11.21 |
R data type vector, factor, list ( 벡터, 팩터, 리스트 ) (0) | 2018.11.19 |