subset
- 조건에 만족하는 데이터를 선택하는 함수
- 단일값만 비교 가능
subset(데이터프레임, 조건, select=뽑아낼 컬럼) |
# 기본 사용법 subset(emp,DEPARTMENT_ID==20) |
|
# 원하는 컬럼만 뽑아낼때 따옴표를 사용하지 않아도 된다. subset(emp,DEPARTMENT_ID==20,select=c(LAST_NAME,SALARY)) subset(emp,DEPARTMENT_ID==20,select=c('LAST_NAME','SALARY')) |
|
# 데이터 프레임으로 비교할수없다 subset(emp,SALARY > subset(emp,EMPLOYEE_ID==101,select=SALARY)) |
|
# 단일값만 비교 가능 subset(emp,SALARY > unlist(subset(emp,EMPLOYEE_ID==101,select=SALARY)))[,c('LAST_NAME','SALARY')] subset(emp,SALARY > as.integer(subset(emp,EMPLOYEE_ID==101,select=SALARY)))[,c('LAST_NAME','SALARY')]
|
ddply
- 데이터프레임을 분할하고 함수를 적용한뒤 데이터 프레임으로 결과를 반환하는 함수
- summarise : 기준 컬럼의 데이터 끼리 모은 후 함수에 적용
- transform : 각 행별로 연산을 수행해서 행당 값을 출력하는 기능
ddply(데이터프레임,기준컬럼,summarise,새컬럼이름=계산함수) ddply(데이터프레임,기준컬럼,transform,새컬럼이름=계산함수) |
summarise 사용
# plyr 라이브러리 임포트 library(plyr) |
|
# 기존방식 rbind(aggregate(SALARY ~DEPARTMENT_ID,emp,sum), |
|
# ddply사용 ddply(emp,'DEPARTMENT_ID',summarise,sum_sal=sum(SALARY)) |
|
# 다양한 함수를 같이 쓸 수 있다. ddply(emp,'DEPARTMENT_ID',summarise, sum_sal=sum(SALARY), avg_sals=mean(SALARY), emp_count=length(EMPLOYEE_ID)) |
transform 사용
# 행 별 비율 구하기 (잘못된 예) ddply(sales,'name',transform,qty=sum(qty),pct_qty=(qty/sum(qty))) |
|
# 행 별 비율 구하기 (올바른 예) ddply(sales,'name',transform,s_qty=sum(qty),pct_qty=(qty/sum(qty))) |
|
# 백분율 ddply(sales,'name',transform,s_qty=sum(qty),pct_qty=(qty*100/sum(qty))) |
* summarise / transform 비교 *
summarise | transform |
ddply(sales,'name',summarise,qty=sum(qty)) |
ddply(sales,'name',transform,qty=sum(qty)) |
'컴퓨터 > R' 카테고리의 다른 글
R - dplyr 라이브러리 ② summarise , group_by (0) | 2020.04.17 |
---|---|
R - dplyr 라이브러리 ① filter, select, arrange, %>%, mutate (0) | 2020.04.16 |
R - merge (0) | 2020.04.15 |
R - 전역변수 / 지역변수 (0) | 2020.04.15 |
R - 함수 (0) | 2020.04.15 |