일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- R데이터형태
- barplot
- 백준
- R 그래프
- React
- 그대로 출력하기
- 이스케이프시퀀스
- plot in r
- 값삭제
- await
- 광명시버스분석
- 그래픽
- setstate
- 10172
- 데이터분석
- 백준 11718
- 배열삭제
- 버스분석
- 탈출문자
- DataFrame
- asynchronization
- react #회원가입 #비밀번호비교
- 이용현황분석
- 배열추가
- barplot in r
- getline
- 값추가
- vetor
- useState
- 백준 10172
- Today
- Total
devlog_zz
R 데이터 형태 ( vector, matrix, array, list, dataframe) 본문
R의 데이터 형태
① vector : 여러 개의 동일한 형태의 데이터를 모아서 함께 저장 (동일한 데이터형)
> vec <- c(1,2,3,4,5)
> vec
[1] 1 2 3 4 5
> vec[3] # 3번째 요소
[1] 3
> vec[-3] # 3번째 요소만 빼고 출력
[1] 1 2 4 5
> vec[2:4] # 2부터 4번째 까지 출력
[1] 2 3 4
> vec[2]<-6
> vec
[1] 1 6 3 4 5
> append(vec,10,after=3) # 벡터에 새로운 요소 추가
[1] 1 6 3 10 4 5
> append(vec,11,after=3)
[1] 1 6 3 11 4 5
> append(vec,12,after=0)
[1] 12 1 6 3 4 5
> vec
[1] 1 6 3 4 5
> vec2<-append(vec,13,after=3)
> vec2
[1] 1 6 3 13 4 5
> fruits <- c(10,20,30)
> fruits
[1] 10 20 30
> names(fruits) <- c('apple','banana','peach') # 각 컬럼에 이름 지정
> fruits
apple banana peach
10 20 30
> var2 <- seq(1,5) ; var2
[1] 1 2 3 4 5
> var3 <- seq(1,10,2) ; var3
[1] 1 3 5 7 9
② matrix(행렬) : 여러 행과 여러 컬럼으로 이루어진 데이터 저장 (동일한 데이터형)
cf ) 벡터는 한 행만 사용가능
> mat1 <- matrix(c(1,2,3,4))
> mat1
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
> mat2 <- matrix(c(1,2,3,4),nrow=2) # nrow를 사용해 2행으로 만들기
> mat2
[,1] [,2]
[1,] 1 3
[2,] 2 4
> mat3 <- matrix(c(1,2,3,4),nrow=2,byrow=T) # 가로로 입력
> mat3
[,1] [,2]
[1,] 1 2
[2,] 3 4
> mat4 <- matrix(c(1,2,3,
+ 4,5,6,
+ 7,8,9),nrow=3,byrow=T)
> mat4
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> mat4 <- rbind(mat4,c(11,12,13)) # 행추가
> mat4
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 11 12 13
> mat4 <- cbind(mat4, c(100,200,300)) # 길이가 다를 경우 에러 발생
Warning message:
In cbind(mat4, c(100, 200, 300)) :
number of rows of result is not a multiple of vector length (arg 2)
> mat4 <- cbind(mat4, c(100,200,300,400)) # 열 추가
> mat4
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 100 100
[2,] 4 5 6 200 200
[3,] 7 8 9 300 300
[4,] 11 12 13 100 400
> mat4 <-mat4[,-4] # 열 삭제
> mat4
[,1] [,2] [,3] [,4]
[1,] 1 2 3 100
[2,] 4 5 6 200
[3,] 7 8 9 300
[4,] 11 12 13 400
③ array(배열) : 3차원 데이터 저장 ( 가로, 세로, 높이)
> array1 <- array(c(1:12),dim=c(4,3))
> array1
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
>
> array2 <- array(c(1:12),dim=c(2,2,3)) # 삼차원 배열
> array2
, , 1 # 1층
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2 # 2층
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
> array2[1,1,3] # x:1, y:1, z:3 인 데이터 조회
[1] 9
vector, matrix, array 는 동일한 데이터형만 저장 가능
④ list : 다른 유형의 데이터 저장
> list1 <- list(name = 'Yeonjae',
+ address='Seoul',
+ tel='010-1234-1234',
+ pay=1000)
> list1
$name #key
[1] "Yeonjae" #value
$address
[1] "Seoul"
$tel
[1] "010-1234-1234"
$pay
[1] 1000
> list1$name
[1] "Yeonjae"
> list1[1:2]
$name
[1] "Yeonjae"
$address
[1] "Seoul"
> list1$birth <- '1996-04-07' # 새로운 요소 추가
> list1
$name
[1] "Yeonjae"
$address
[1] "Seoul"
$tel
[1] "010-1234-1234"
$pay
[1] 1000
$birth
[1] "1996-04-07"
⑤ dataframe : 다른 데이터형을 가진 2차원의 데이터 구조, 각각의 행들이 서로다른 데이터 타입
> # 벡터로 부터 데이터 프레임 생성하기
> no <- c(1,2,3,4)
> name <- c ('Apple','Peach','Banana','Grape')
> price <- c(500,200,100,50)
> qty <- c(5,2,4,7)
> sales <-data.frame(NO=no,NAME=name,PRICE=price,QTY=qty)
> sales
NO NAME PRICE QTY
1 1 Apple 500 5
2 2 Peach 200 2
3 3 Banana 100 4
4 4 Grape 50 7
> # 행렬로 부터 데이터 프레임 생성하기
> sales2 <- matrix(c(1,'Apple',500,5,
+ 2,'Peach',200,2)
+ ,nrow=2,byrow=T)
> df1 <- data.frame(sales2)
> df1
X1 X2 X3 X4
1 1 Apple 500 5
2 2 Peach 200 2
> names(df1) <- c('NO','NAME','PRICE','QTY') # 라벨명 저장
> df1
NO NAME PRICE QTY
1 1 Apple 500 5
2 2 Peach 200 2
> sales$NAME
[1] Apple Peach Banana Grape
Levels: Apple Banana Grape Peach
> subset(sales,price==200)
NO NAME PRICE QTY
2 2 Peach 200 2
> df1<-data.frame(name=c('apple','banana','cherry'),price=c(300,200,100))
> df2<-data.frame(name=c('apple','cherry','berry'),qty=c(10,20,30))
> df1
name price
1 apple 300
2 banana 200
3 cherry 100
> df2
name qty
1 apple 10
2 cherry 20
3 berry 30
> merge(df1,df2) #공통으로 있는 name 컬럼 데이터 출력
name price qty
1 apple 300 10
2 cherry 100 20
> merge(df1,df2,all=T) #데이터가 없는 것도 모두 나옴
name price qty
1 apple 300 10
2 banana 200 NA
3 cherry 100 20
4 berry NA 30
> cbind(df1,df2) #df1과 df2를 합쳐 하나의 데이터 프레임으로 만듦
name price name qty
1 apple 300 apple 10
2 banana 200 cherry 20
3 cherry 100 berry 30
> rbind(df1,df2)
서진수.「R라뷰」더알음.
'빅데이터 > R을 이용한 빅데이터분석' 카테고리의 다른 글
버스 노선별 이용 승객 현황분석 barplot() in r (0) | 2018.10.02 |
---|---|
연도별 요양 기관별 보험 청구 건수 분석 - plot() in r (0) | 2018.09.12 |
R 그래프 기초 2 - barplot() (1) | 2018.09.10 |
R 그래프 기초1 - plot() (1) | 2018.09.10 |
textmining - wordcloud (2) | 2018.09.04 |