Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
250x250
Tags
- 오라클
- python
- boostcoures
- 기초다지기
- 데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 이것이 취업을 위한 코딩테스트다 with 파이썬
- 정보처리기사
- SQL
- 데이터베이스
- Machine Learning
- 빅데이터 분석 기반 에너지 운영 관리자 양성 및 취업과정
- 코딩테스트 python
- 빅분기
- 부스트코스
- 네이버부스트캠프
- 파이썬
- 프로그래머스
- DB
- 인공지능기초다지기
- AI 플랫폼을 활용한 데이터 분석
- 난생처음 R코딩&데이터 분석 저서
- boostcourse
- PY4E
- 빅데이터분석기사
- r
- 이기적
- [멀티잇]데이터 시각화&분석 취업캠프(Python)
- 코딩테스트
- Ai
- Oracle
- Today
- Total
매일공부
[R기초] 데이터 재구조화 본문
merge(병합)
- 두 개의 데이터프레임을 합하는 기능. 컬럼을 기준으로 데이터 병합
- merge(A, B) : 컬럼명의 값이 같은 데이터만 병합
- merge(A, B, by="key컬럼") : merge의 key값이 같은 데이터만 병합 [inner join]
cust_id <- c("c01","c02","c03","c04","c05","c06","c07")
last_name <- c("Kim","Lee","Choi","Park","Bae","Kim","Lim")
cust1 <- data.frame(cust_id, last_name)
# cust_id last_name
# 1 c01 Kim
# 2 c02 Lee
# 3 c03 Choi
# 4 c04 Park
# 5 c05 Bae
# 6 c06 Kim
# 7 c07 Lim
cust2 <- data.frame(cust_id=c("c05","c06","c07","c08","c09")
, last_name=c("Bae","Kim","Lim2","Cho","Yoo"))
# cust_id last_name
# 1 c05 Bae
# 2 c06 Kim
# 3 c07 Lim
# 4 c08 Cho
# 5 c09 Yoo
cust3 = merge(cust1, cust2)
# cust_id last_name
# 1 c05 Bae
# 2 c06 Kim
cust3 = merge(cust1, cust2, by="cust_id")
# cust_id last_name.x last_name.y
# 1 c05 Bae Bae
# 2 c06 Kim Kim
# 3 c07 Lim Lim2
- [full outer join] : merge(A, B, by="key컬럼", all=TRUE) key를 기준으로 모든 데이터 병합
cust4 = merge(cust1, cust2, by="cust_id", all=TRUE)
# cust_id last_name.x last_name.y
# 1 c01 Kim <NA>
# 2 c02 Lee <NA>
# 3 c03 Choi <NA>
# 4 c04 Park <NA>
# 5 c05 Bae Bae
# 6 c06 Kim Kim
# 7 c07 Lim Lim2
# 8 c08 <NA> Cho
# 9 c09 <NA> Yoo
- [left outer join] : merge(A, B, by="key컬럼", all.x=TRUE) key를 기준으로 모든 x데이터만 병합
cust5 = merge(cust1, cust2, by="cust_id", all.x=TRUE)
cust5
# cust_id last_name.x last_name.y
# 1 c01 Kim <NA>
# 2 c02 Lee <NA>
# 3 c03 Choi <NA>
# 4 c04 Park <NA>
# 5 c05 Bae Bae
# 6 c06 Kim Kim
# 7 c07 Lim Lim2
- [right outer join] : merge(A, B, by="key컬럼", all.y=TRUE) key를 기준으로 모든 y데이터만 병합
cust6 = merge(cust1, cust2, by="cust_id", all.y=TRUE)
cust6
# cust_id last_name.x last_name.y
# 1 c05 Bae Bae
# 2 c06 Kim Kim
# 3 c07 Lim Lim2
# 4 c08 <NA> Cho
# 5 c09 <NA> Yoo
python의 concat과 같은 기능 - 단순히 붙이는 기능
- rbind() : dataframe 행 추가
df1 = data.frame(name=c('apple', 'banana','cherry'), price=c(300,200,100))
# name price
# 1 apple 300
# 2 banana 200
# 3 cherry 100
# 행추가
df2 <- data.frame(name=c('mango','berry'), price=c(400, 500))
df1 <- rbind(df1, df2)
# name price
# 1 apple 300
# 2 banana 200
# 3 cherry 100
# 4 mango 400
- cbind() : dataframe 열 추가
# 열추가. 행 수가 같아야함
df1 <- cbind(df1, data.frame(qty=c(10,20,30,40,50)))
df1
# name price
# 1 apple 300
# 2 banana 200
# 3 cherry 100
# 4 mango 400
# 5 berry 500
subset
- subset(data, select=컬럼명|vector) : 부분 데이터만 리턴
- select = -컬럼 : -를 하면 해당 컬럼 제외하고 나머지 리턴
no <- c(1,2,3,4,5)
name <- c('서진수','주시현','최경우','이동근','윤정웅')
address <- c('서울','대전','포항','경주','경기')
tel <- c(1111,2222,3333,4444,5555)
hobby <- c("독서","미술","여행","요리","운동")
member <- data.frame(NO=no, NAME=name, ADDRESS=address, TEL=tel, HOBBY=hobby)
member
# NO NAME ADDRESS TEL HOBBY
# 1 1 서진수 서울 1111 독서
# 2 2 주시현 대전 2222 미술
# 3 3 최경우 포항 3333 여행
# 4 4 이동근 경주 4444 요리
# 5 5 윤정웅 경기 5555 운동
#번호, 이름, 전화번호만 저장
member2 <- subset(member, select=c(NO,NAME,TEL))
member2
# NO NAME TEL
# 1 1 서진수 1111
# 2 2 주시현 2222
# 3 3 최경우 3333
# 4 4 이동근 4444
# 5 5 윤정웅 5555
# 취미만 제외
member3 <- subset(member, select=-HOBBY)
member3
# NO NAME ADDRESS TEL
# 1 1 서진수 서울 1111
# 2 2 주시현 대전 2222
# 3 3 최경우 포항 3333
# 4 4 이동근 경주 4444
# 5 5 윤정웅 경기 5555
* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.
728x90
'Programming > R' 카테고리의 다른 글
[R기초] 정규표현식 & 문자열 (0) | 2023.07.28 |
---|---|
[R기초] 조건문 & 반복문 (0) | 2023.07.27 |
[R기초] Data object : dataFrame 자료형 (0) | 2023.07.24 |
[R기초] Data object : List 자료형 (0) | 2023.07.24 |
[R기초] Data object : Matrix 자료형 (0) | 2023.07.24 |
Comments