본문 바로가기
R note

R 데이터 프레임에서 특정 열 값 변환하기

by S-Pang 2025. 3. 13.
728x90
반응형

 

문제 상황

R을 사용하다 보면 데이터 프레임의 특정 열 값을 변환해야 하는 경우가 많습니다. 예를 들어, 어떤 변수의 부호를 바꾸고 싶다고 가정해 봅시다. 다음과 같은 코드를 작성할 수 있습니다:

df_raw$log_Fold_change <- -1 * df_raw['log_Fold_change']

그러나 이 코드는 우리가 기대하는 대로 작동하지 않을 수 있습니다. 왜 그런 걸까요?

올바른 코드

위 코드는 데이터 프레임의 특정 열을 참조하는 방식 때문에 문제가 발생합니다. 데이터 프레임에서 열을 다룰 때는 $ 연산자를 사용하는 것이 일반적으로 더 적절합니다. 올바른 코드는 다음과 같습니다.

df_raw$log_Fold_change <- -df_raw$log_Fold_change

왜 이런 차이가 발생할까?

R에서 데이터 프레임의 특정 열을 참조하는 방법에는 두 가지가 있습니다:

  1. df['column_name'] → 데이터 프레임의 열을 데이터 프레임 형태로 반환
  2. df$column_name → 데이터 프레임의 열을 벡터 형태로 반환

이 차이 때문에 df_raw['log_Fold_change']은 데이터 프레임이고, -1 * 데이터 프레임을 수행하면 연산이 기대대로 작동하지 않습니다. 반면, df_raw$log_Fold_change을 사용하면 벡터 연산이 올바르게 수행됩니다.

예제 코드

아래 예제를 통해 차이를 직접 확인해 보겠습니다.

# 예제 데이터 생성
df <- data.frame(value = c(1, 2, 3, 4, 5))

# 잘못된 방식 (데이터 프레임 반환)
df['value_neg'] <- -df['value']
print(df)  # value_neg가 데이터 프레임 형태로 저장됨

# 올바른 방식 (벡터 반환)
df$value_neg_correct <- -df$value
print(df)  # value_neg_correct가 벡터 형태로 저장됨

결론

  • 데이터 프레임에서 특정 열을 조작할 때는 $ 연산자를 사용하자.
  • df['column']을 사용하면 데이터 프레임이 반환되고, df$column을 사용하면 벡터가 반환된다.
  • 연산이 기대대로 수행되지 않는다면, 데이터 구조를 확인하고 올바른 접근 방식을 선택하자.

이제 여러분도 데이터 프레임에서 열을 변환할 때 실수를 피할 수 있을 것입니다!

 

728x90
반응형