R의 split() 함수를 사용하여 데이터를 분할하는 방법


R의 Split() 함수는 요인 수준에 따라 데이터를 그룹으로 분할하는 데 사용할 수 있습니다.

이 함수는 다음 기본 구문을 사용합니다.

나누기(x, f, …)

금:

  • x : 그룹으로 나눌 벡터 또는 데이터 블록의 이름
  • f : 그룹화를 정의하는 요소

다음 예에서는 이 함수를 사용하여 벡터와 데이터 프레임을 그룹으로 나누는 방법을 보여줍니다.

예 1: Split()을 사용하여 벡터를 그룹으로 분할

다음 코드는 요인 수준의 벡터를 기반으로 데이터 값의 벡터를 그룹으로 나누는 방법을 보여줍니다.

 #create vector of data values
data <- c(1, 2, 3, 4, 5, 6)

#create vector of groupings
groups <- c('A', 'B', 'B', 'B', 'C', 'C')

#split vector of data values into groups
split(x = data, f = groups)

$A
[1] 1

$B
[1] 2 3 4

$C
[1] 5 6

결과는 세 그룹입니다.

인덱싱을 사용하여 특정 그룹을 검색할 수도 있습니다.

 #split vector of data values into groups and only display second group
split(x = data, f = groups)[2]

$B
[1] 2 3 4

예제 2: Split()을 사용하여 데이터 프레임을 그룹으로 분할

R에 다음과 같은 데이터 프레임이 있다고 가정합니다.

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'G', 'F', 'F'),
                 points=c(33, 28, 31, 39, 34, 44),
                 assists=c(30, 28, 24, 24, 28, 19))

#view data frame
df

  team position points assists
1 GA 33 30
2 AG 28 28
3 AF 31 24
4 BG 39 24
5 BF 34 28
6 BF 44 19

다음 코드를 사용하여 “팀” 변수를 기반으로 데이터 프레임을 그룹으로 나눌 수 있습니다.

 #split data frame into groups based on 'team'
split(df, f = df$team)

$A
  team position points assists
1 GA 33 30
2 AG 28 28
3 AF 31 24

$B
  team position points assists
4 BG 39 24
5 BF 34 28
6 BF 44 19

결과는 두 그룹입니다. 첫 번째에는 “팀”이 A와 같은 줄만 포함되고 두 번째에는 “팀”이 B와 같은 줄만 포함됩니다.

여러 요인 변수를 사용하여 데이터를 그룹으로 나눌 수도 있습니다. 예를 들어, 다음 코드는 “팀” 및 “위치” 변수를 기반으로 데이터를 그룹으로 나누는 방법을 보여줍니다.

 #split data frame into groups based on 'team' and 'position' variables
split(df, f = list(df$team, df$position))

$AF
  team position points assists
3 AF 31 24

$BF
  team position points assists
5 BF 34 28
6 BF 44 19

$AG
  team position points assists
1 GA 33 30
2 AG 28 28

$BG
  team position points assists
4 BG 39 24

결과는 4개 그룹입니다.

추가 리소스

다음 튜토리얼에서는 R에서 다른 일반적인 기능을 사용하는 방법을 설명합니다.

R에서 summary() 함수를 사용하는 방법
R에서 Replicate() 함수를 사용하는 방법
R에서 match() 함수를 사용하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다