해보記/R

<記> R 데이터 핸들링 (1)

Light Pillar 2019. 12. 10. 23:43

데이터를 다루기 위한 여러가지 함수들을 살펴보자

 

행 / 열 / 문자열 개수 확인하기

행 / 열 / 문자열 개수를 알아내기 위해서는 nrow / ncol / nchar / dim 등 함수를 사용한다.

# 데이터 프레임을 생성한다.
> tmp_df <- data.frame(AA = rnorm(10), BB = letters[1:10])

# nrow( ) 함수는 행의 개수를 결과로 출력한다.
> nrow(tmp_df)
# ncol( ) 함수는 열의 개수를 결과로 출력한다.
> ncol(tmp_df)
# dim( ) 함수는 행과 열의 개수를 결과로 출력한다.
> dim(tmp_df)

# 벡터를 생성한다.
> tmp_vec <- c("OK", "NOT", "APPLE", "SCHOOL")

# nchar( ) 함수는 각각의 값의 문자개수를 결과로 출력한다.
> nchar(tmp_vec)
# 벡터 내의 값의 개수를 알기 위해서는 length( ) 함수를 사용한다.
> length(tmp_vec)

 

행 / 열 이름 변경하기

데이터의 행과 열의 이름을 확인하거나 변경을 위해서는 names / dimnames / colnamaes / rownames 함수를 사용한다.

# 열의 이름을 결과로 출력한다.
> names(tmp_df)
# 열의 이름을 결과로 출력한다.
> colnames(tmp_df)
# 행의 이름을 결과로 출력한다.
> rownames(tmp_df)
# 열과 행의 이름을 결과로 출력한다.
> dimnames(tmp_df)

# 데이터 프레임을 생성한다.
> tmp_df2 <- data.frame(AA = c(1:5), BB = c("A", "A", "B", "B", "B"))
# 첫 번째 열의 이름을 변경한다.
> names(tmp_df2)[1] <- "AA_1"
# 첫 변째 열과 두 번째 열의 이름을 변경한다.
> names(tmp_df2) <- c("AA_2", "BB_2")
# 첫 번째 열의 이름을 변경한다.
> colnames(tmp_df2)[1] <- "AA"
# 첫 번째 행의 이름을 변경한다.
> rownames(tmp_df2)[1] <- "row1"

 

열 추가 / 제거 하기

이미 생성된 데이터에 열을 추가하거나 제거하는 방법에 대해서 알아본다.

# CC 라는 이름으로 새로 컬럼을 생성하고 그 안에 값을 1로 채워 넣는다.
> tmp_df2$CC <- 1
# AA 컬럼과 CC 컬럼의 값을 더하여 새로운 DD 컬럼을 생성하여 채워 넣는다.
> tmp_df2$DD <- tmp_df2$AA + tmp_df2$CC

# 첫 번째 위치의 컬럼을 제외한 결과를 출력한다.
> tmp_df2[, -1]
# 컬럼의 이름으로 제외하는 것은 단항연산자 오류('-' 연산자)로 처리되지 않는다.
> tmp_df2[, -"BB_2"]
# 필요한 컬럼의 값만을 결과로 출력한다.
> tmp_df2[, c("CC", "DD")]
# subset( ) 함수를 이용하여 특정 컬럼을 그 컬럼의 이름으로 제외하고 결과를 확인할 수 있다.
> subset(tmp_df2, select = -CC)

 

데이터 추출하기

# 데이터 프레임을 생성한다.
# AA 컬럼에 a ~ e 까지 10회 반복 값을, BB 컬럼에는 60~70 사이의 50개 랜덤값을 생성 
> Sample.df <- data.frame(AA = rep(letters[1:5], 10), BB = sample(60:70, 50, replace = T), stringAsFactors = FALSE)

# AA컬럼의 값중에서 a인 값만 추출
> Sample.df[Sample.df$AA == "a", ]
> subset(Sample.df, AA == "a")
# AA컬럼의 값중에서 a와 b의 값만 추출
> Sample.df[Sample.df$AA %in% c("a", "b"), ]
> subset(Sample.df, AA %in% c("a", "b"))

> for(i in 1:nrow(Sample.df))
> {
>    if(Sample.df[i, "AA"] == "a")
>    {
>       if(i == 1)
>       {
>          Select.df <- Sample.df[i, ]
>       } else {
>          Select.df <- rbind(Select.df, Sample.df[i, ])
>       }
>    }
> }

# 필요한 컬럼 추출
# 컬럼 이름이 BB인 컬럼과 첫 번째 컬럼 값을 추출한다.
> subset(Sample.df, select = c(BB, 1))

> subset(Sample.df, select = c(-BB))

'해보記 > R' 카테고리의 다른 글

<記> R 데이터 핸들링 (3)  (0) 2019.12.16
<記> R 데이터 핸들링 (2)  (0) 2019.12.13
<記> R 연산자  (0) 2019.12.06
<記> R List  (0) 2019.12.05
<記> R data.frame  (0) 2019.12.04