본문 바로가기

R 통계

[R] dataframe과 열의 차이

 
Q : w1$BMI = w1['WT']/(w1['HT']/100)**2 이게 작동은 하는데 새로 추가되는열의 이름이 WT로 나와

A : R에서 w1['WT'] / (w1['HT'] / 100)**2와 같이 코드를 작성했을 때 작동은 하지만, 새로 추가되는 열의 이름이 WT로 나오는 이유는 R의 대괄호([])를 사용해 열을 선택할 때 데이터프레임 형태로 반환되기 때문입니다. 이 경우, 대괄호로 참조한 결과가 여전히 데이터프레임이기 때문에 연산 후에도 새로운 열의 이름이 WT로 남습니다.

이를 해결하기 위해서는, 열 이름을 벡터 형식으로 가져오는 $ 연산자를 사용하는 것이 좋습니다.

문제 해결 방법

새로운 BMI 열을 추가할 때 $ 연산자를 사용하여 벡터를 참조하는 방식으로 수정하면 됩니다:

 
w1$BMI <- w1$WT / (w1$HT / 100)^2

위 코드는 올바르게 BMI라는 이름의 새로운 열을 추가하고, 계산된 결과를 저장합니다.

왜 그런 현상이 발생했는가?

w1['WT']는 데이터프레임의 하위 집합으로 반환되며, 그 결과는 데이터프레임으로 유지됩니다. 반면 w1$WT는 WT 열을 벡터로 반환하므로 연산 후에도 새 열의 이름이 BMI로 올바르게 추가됩니다.

또한, 제곱을 할 때 R에서는 ** 대신 ^ 연산자를 사용하므로 다음과 같이 작성하는 것이 더 적절합니다:

r
코드 복사
w1$BMI <- w1$WT / (w1$HT / 100)^2

'R 통계' 카테고리의 다른 글

[R] 표본과 추론  (0) 2024.10.19
[R] 기본함수 - aggregate()  (0) 2024.10.15
[R] 데이터 전처리 -결측치 제거  (0) 2024.10.15
[R] 정규성 분석  (0) 2024.10.12
[R] 범주형 데이터와 그래프  (0) 2024.10.12