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 |