2017-12-07 13 views
0

R (Framingham Heart Study 데이터)에 데이터 세트가 있고 BMI 그룹에 저체중, ""정상 ","과체중 "및"비만 "R에 그룹을 지정하려고했지만 NA 값을 채우고 그룹에 속한 다른 값을 누락했습니다

11,000 회의 관측과 38 개의 변수/열이 있으므로 여기에 일부 데이터를 게시하는 것이 어려울 수 있습니다.이 데이터가 없으면 너무 많은 문제가 발생하지 않을 것입니다.

데이터 세트가 FRM라고 나는 다음과 같은 방법으로 부분 집합하는 것을 시도하고있다 : "."

frm$BMIGRP <- NA #Creating new variable (this part works and creates a BMIGRP column with all NA values) 
frm$BMIGRP[which(as.numeric(frm$BMI) < 18.5)] <- "underweight" 

그러나, 나는이있는하는로 표시된 데이터 세트 BMI 변수 (의 값 NA있다 또한 NA로 변경 시도).

각 그룹에 대해이 방법의 하위 집합을 만들려고하면 저체중 값의 일부만을 "저체중"에 할당하고 많은 NA/"."를 할당합니다. 가치 또한 저평가로. 그런 다음 데이터 세트를 볼 수 있기 때문에 단지 10 개의 "정상적인"체중 과목과 약 11000의 비만 범주가 사실이 아님을 알려줍니다.

제대로 수행되면 각 범주에서 수 백에서 수천 회의 관찰이있는 네 개의 그룹이 만들어 져야합니다. 그러나 저는 정상 체중 10, 비만 체중 71, 비만 체중 11,000을 얻었습니다.

어디서 잘못 가고 있는지 모르거나 새 변수를 만들고 같은 방식으로 할당 할 수있는 다른 방법이 있는지 잘 모르겠습니다. 어떤 도움이라도 대단히 감사합니다.

또한 교수님이 실험실 세션에서 예제로 제공 한 코드이며 기본적으로 데이터 세트의 적절한 대체물을 복사하여 붙여 넣습니다.

이 웹 사이트의 첫 번째 질문으로 불완전하거나 더 많은 정보를 제공해야하는 경우 사과드립니다. 감사!

+0

BMI 열 class (frm $ BMI)의 클래스를 확인하십시오. 숫자 여야합니다. – leeum

+0

그래, 그것은 숫자가 아니 었어, 그것은 왠지 이유로 char했다. 감사! –

답변

0

코드를 읽는 중 열이 숫자가 아닌 것 같습니다.

이 작동합니다 : @leeum처럼

frm$BMI <- as.numeric(frm$BMI) 
frm$BMIGRP[frm$BMI < 18.5] <- "underweight" 
+0

가져 오기 데이터 세트 단추를 사용하여 데이터 세트를 다시 가져 오려고 시도했는데 열이 숫자가 아니란 것을 보았습니다 (어떻게 든 char 이었습니까?) 숫자로 변경했습니다. 그 후, 나는 당신의 코드를 사용했고 효과가있었습니다! 나는 당신이 frm $ BMIGRP [frm $ BMI <18.5]라고 말하기를 원했기 때문에 나는 그 대신에 그것을 시도했다. 감사! –

+0

그게 바로 내가 의미하는 바입니다. 다행이 당신을 위해 고쳐주었습니다. 내 코드 업데이트 됨 – leeum

0

말했다. BMI이 숫자인지 확인하십시오. BMI을 기반으로 새로운 카테고리 열을 만들려면 case_whendplyr에서 찾으십시오. 그래서 어쩌면 이것은 당신이 원하는 무엇인가 :

library(dplyr) 

frm <- frm %>% 
    mutate(BMI = as.numeric(BMI)) %>% 
    mutate(BMIGRP = case_when(
    BMI < 18.5 ~ 'underweight', 
    between(BMI, 18.5, 24.9) ~ 'healthy weight', 
    between(BMI, 25, 29.9) ~ 'overweight', 
    BMI > 30 ~ 'obese') 
) 

mutate(BMIGRP = as.numeric(BMIGRP))는 숫자에 BMIGRP 열을 변환합니다. mutate(BMIGRP = case_when(...)BMIGRP이라는 새 열을 만들고 BMI을 기반으로 '저체중', '건강한 체중', '과체중'또는 '비만'을 할당합니다. 인수가 적용되지 않으면 NA이 지정됩니다.