apply 계열 함수 → 임의의 함수를 적용한 결과를 얻기 위한
apply(data, margin(적용방향), function)
margin은 1 or 2 값 중 하나인데, 1은 행을 기준으로, 2는 열을 기준으로 Function 적용할지를 선택한다.
데이터 프레임에 임의의 함수를 적용한 결과를 얻기 위한 함수.
즉, 데이터 전체에 대해 함수를 한번에 적용하는 연산 수행을 한다는 것.
apply(iris[,1:4],2,sum)
아이리스 1부터 4번째 열을 기준으로 다 더하겠다는 말이다.
- lapply or sapply
lapply(data, mean) >> 걍 리스트로 변환 , sapply도 마찬가지 얘는 행렬 or 벡터로 변환
- tapply
tapply(data,index,funtion)
index = 데이터를 묶을 factor를 지정해야한다. factor가 아니면 자동변환
##예를 들어 iris 데이터들에 대해 species 별 (grouping by species) sepal.length의 평균?
tapply(iris$sepal.Length, iris $ species, mean)
- mapply
random normal 분포
rnorm(난수 개수,mean, sd)
mapply(rnorm,c(1,2,3),c(0,10,100),c(1,1,1)
처음 c(1,2,3)은 몇개를 뜻하냐 각각 즉 1,2,3개의 숫자를 각각
두번째 벡터는 이들의 평균을 뜻한다 따라서 1개의 숫자 는 0이다. 평균이 0이어야하니까
세번째 벡터는 표준편차를 뜻하겠다.
ex) mapply(rnorm,c(1,2,3) , c(0,10,100), c(1,1,1)
>
[1] -0.144
[2] 10.840 10.844
[3] 100.7173 100.1313 100.1584 뭐 이런 느낌
doBy package , 그룹으로 묶은 후 함수 호출하기
summaryBy() - 열 값에 따라 그룹으로 묶은 뒤 요약 값 계산
summaryBy(Sepal.Width+Sepal.Length~Species,iris)
order() - 열 값에 따라 데이터 프레임을 정렬
sampleBy- 데이터프레임을 컬럼 값에 따라 그룹으로 묶은 후 sample 추출
ex) sample(~열, frac = 0.1, data = 데이터이름)
데이터 분리 및 병합하기 -split,subset,merge
3.split() - 주어진 조건에 따라 데이터 분리
iris데이터라 치면
split(iris, iris$species)
species에 따라 쫙쫙 결과물 나옴 > 그걸 리스트에 저장해서 준다.
$setosa Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa 6 5.4 3.9 1.7 0.4 setosa
…Etc
- subset() - 주어진 조건을 만족하는 데이터를 선택.
subset(iris, Species ==”setosa”)
이렇게 되면 iris데이터 중 조건을 만족하는 특정 부분만 취하여 반환. (setosa종만 추출)
subset(iris,Sepal.Length > 5.0 & Sepal.Width > 4.0) 여기에 더해 + select(c(”species”) 이렇게 작성해도. ㅇㅋ
- Merge() - 데이터를 공통된 값에 기준해 병합
이 둘을 merge(x,y)하면 공동된 값 name에 따라 병합됨.
x가 만약
name math
a 1
b 2
c 3
y가 만약
name English
c 4
b. 5
a 6
따라서 두개 merge를 하면
name math English
a 1 6
b. 2 5
c. 3 4
데이터 프레임 컬럼에 접근하기
- with(), within()
필드 이름만으로 (열의 이름만으로) 데이터에 바로 접근 가능하게 하는것.
##with()
sepal_Length_mean = with(iris, mean(Sepal.Length))
##within() -- with와 비슷한 기능이지만 이미 저장된 값을 손쉽게 변경하는 기능 또한 제공한다.
x = data.frame(val=c(1,2,3,4,NA,5,NA)))
x = within(x,{val= ifelse(is.na(val),median(val,na.rm=TRUE),val)})
원래는 val = ifelse가 아니라 x$val= ifelse().. 이런식으로 썼어야했다.
- attach(), detach()
##attach() - 얘 하는 순간 열 이름만으로 데이터를 곧바로 접근가능함
attach(iris)
head(Sepal.Width)
##detach() - 저거 해제
detach(iris)
head(Sepal.width
'R studios' 카테고리의 다른 글
R통계 : Theme #6. Tidy. (0) | 2024.05.27 |
---|---|
R통계 : Theme#5. 데이터 정제 (결측치와 이상치) 다루기 (0) | 2024.05.27 |
R통계 : Theme #4. Dplyr package (0) | 2024.05.27 |
R 통계 : Theme #2. 데이터 저장 및 불러오기 (0) | 2024.05.27 |
R통계 : Theme #1. 기본적인 데이터 타입 (0) | 2024.05.27 |