이경수 선생님의 수학실험실

Loop Functions - split 본문

R

Loop Functions - split

(이경수) 2021. 4. 15. 20:53

split 함수는 split(x, f)의 형식으로 호출된다. 여기서 x는 벡터 혹은 데이터 프레임으로, split 함수는 f(factor)에 의해 정의된 그룹으로 x를 분리한다. 

> x <- c(rnorm(10), runif(10), rnorm(10,1))
> f <- gl(3, 10)
> split(x,f)
$`1`
 [1] -0.05118365 -1.22696589 -0.02735810 -0.16598314
 [5] -0.57845836  0.45470815  0.78683943 -0.14484497
 [9]  1.79718752  2.09683243

$`2`
 [1] 0.3925692 0.0186510 0.7930081 0.6412985 0.7642814
 [6] 0.5014354 0.2523964 0.7262209 0.0436705 0.1768423

$`3`
 [1]  0.8772809  2.2132673 -0.2333291 -0.3541820  0.3175512
 [6]  1.2154913 -1.3188785  1.0005232  0.3490112  0.6882708

※ gl(n, k) : n개의 level로 factor를 생성하는 함수이다.

 

> gl(2,1)
[1] 1 2
Levels: 1 2
> gl(3,5)
 [1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> gl(3,10)
 [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3
[29] 3 3
Levels: 1 2 3

 

split 함수는 결과를 리스트로 반환하기 때문에 lapply 함수로 평균 등을 구해 볼 수 있다.

> s <- split(airquality, airquality$Month)
> lapply(s, function(x) colMeans(x[,c("Ozone", "Solar.R", "Temp")]))
$`5`
   Ozone  Solar.R     Temp 
      NA       NA 65.54839 

$`6`
   Ozone  Solar.R     Temp 
      NA 190.1667  79.1000 

$`7`
    Ozone   Solar.R      Temp 
       NA 216.48387  83.90323 

$`8`
   Ozone  Solar.R     Temp 
      NA       NA 83.96774 

$`9`
   Ozone  Solar.R     Temp 
      NA 167.4333  76.9000 

'R' 카테고리의 다른 글

Random numbers  (0) 2021.04.20
The str Function(What is in this Object?) & summary Function  (0) 2021.04.16
Loop Functions - lapply  (0) 2021.04.15
Function  (0) 2021.04.15
Control Structures_Next  (0) 2021.04.15
Comments