전처리 패키지 dplyr
1. 설치 | install.packages("dplyr") library(dplyr) |
2. 이름변경 rename |
#변경이름 = 기존이름 방식으로 iris1<- iris %>% rename(a1=Sepal.Length, a2=Sepal.Width) |
3. 변수 생성 mutate |
#1부터 150까지 입력되어있는 id 변수를 새로 생성 iris2<-iris %>% mutate(label=c(1:150)) #petal.length로 label 넣기 iris2<-iris2 %>% mutate(label=ifelse(Petal.Length<=1.6, "L", ifelse(Petal.Length>=5.1,"H","M"))) #transmute의 사용(사용 시 새로 생긴 변수 빼고 없어짐) iris2<-iris2 %>% transmute(label=ifelse(Petal.Length<=1.6, "L", ifelse(Petal.Length>=5.1,"H","M"))) |
4. 행 추출 filter |
iris3<-iris %>% filter(Species=="setosa"|Species=="versicolor") #결측치 제거 #실험용 결측치 iris3<- iris iris3[1,1] = NA iris3[2,2] = NA iris3<- iris3 %>% filter(!is.na(Sepal.Width)&!is.na(Sepal.Length)) |
5. 열 추출 select |
iris4<-iris %>% select(Sepal.Length,Sepal.Width) |
6. 정렬 arrange |
#오름차순 정렬 iris5<- iris %>% mutate(id = (150:1)) %>% arrange(id) #내림차순 정렬 iris5<- iris %>% mutate(id = (1:150)) %>% arrange(desc(id)) |
7. 그룹화, 요약 group_by와 summary |
#group_by(Species)는 데이터프레임을 "Species" 열을 기준으로 그룹화합니다. iris6 <- iris %>% group_by(Species) %>% summarise(평균=mean(Sepal.Length), 합=sum(Sepal.Width), 관측치=n()) |
8. 열 합치기 left_join |
ex1 <-iris[1:5,1:2] ex2 <-iris[1:6,1:2] #cbind(ex1,ex2) 행 길이 달라서 실행 안됨됨 left_join(ex1,ex2) #ex1 기준 left_join(ex2,ex1) #ex2 기준 |
9. 행 합치기bind_rows | #위아래 방향으로 합쳐짐 bind_rows(ex1,ex2) |
10. 결합 | left_join : x기준 합치기, y에 없으면 y값은 NA inner_join : 겹치는 행만 뽑기 full_join : 합집합으로 다 합치기, 없는 값은 NA #by 인자를 통해 병합 기준 열을 정하기 안해도 자동적으로 병합하긴함, 하지만 by를 써도됨 |
11. 중복 제거(1) distinct 사용 (변수,. keep_all =true |
ex1 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5), gender = c("F", "F", "M", "F", "B", "B", "F", "M"), variant = c("a", "b", "c", "d", "e", "f", "g", "h")) das<- ex1[-which(duplicated(ex1$id)),] #id 기준 중복 제거 t1 <- ex1 %>% distinct(id, .keep_all = TRUE) #gender 기준 중복 제거 t2 <- ex1 %>% distinct(gender, .keep_all = TRUE) #variant 기준 중복 제거 t3 <- ex1 %>% distinct(variant, .keep_all = TRUE) |
12. 중복제거(2) group_by, filter와 duplicate |
ex3 <- data.frame(id = c(1, 2, 2, 3, 3, 4, 5, 5), gender = c("F", "F", "M", "F", "B", "B", "F", "M"), variant = c("a", "b", "c", "d", "e", "f", "g", "h")) t1 <- ex3 %>% group_by(id) %>% filter (! duplicated(id)) t2 <- ex3 %>% group_by(gender) %>% filter (! duplicated(gender)) t3 <- ex3 %>% group_by(variant) %>% filter (! duplicated(variant)) |
'1학년 > R언어' 카테고리의 다른 글
데이터의 이해, 단순회귀와 데이터 전처리/해석 (1) | 2023.12.23 |
---|---|
데이터의 이해, 그래프/산점도 그리기와 다중공선성 (2) | 2023.12.22 |
데이터의 이해, 반복문 (1) | 2023.12.22 |
데이터의 이해 중간고사 정리 (1) | 2023.12.21 |
모두를 위한 R 데이터 분석 입문 CH3. 매트릭스와 데이터프레임 다루기, 파일 데이터 읽기쓰기 정리 (2) | 2023.12.21 |