2014-10-07 4 views
-2

데이터 세트는 여기에서 찾을 수 있습니다 : https://www.dropbox.com/s/l7pc11hhiwr8zzn/data.csv?dl=0 또는 "nlschools"로 MASS 라이브러리에 있습니다. 이 세트에서 데이터 집합에 여분의 열을 추가하고 문자열 값을 R로 지정하려면 어떻게해야합니까?

는, I는 같은 인덱싱 SES 열에있는 값 중 낮은 (= 40 30 < SES <) 메드 (< = 30), 또는 고 ( SEScat라는 추가 열을 추가 할 > 40). 내 상상력에서 명령은 다음과 같이 보일 수 있습니다. > nlschools$SEScat <- (pseudo: low if SES <=30, med if 30 < SES <=40, high if SES > 40),하지만 피팅 구문을 찾을 수 없었으므로 설명서가 가지고있는 것보다 훨씬 더 많은 지식을 사용하는 것 같습니다.

그러나이 작업을 수행하려면 먼저 추가 열을 만들어야합니다. names(nlschools) <- c("lang","IQ","class","GS","SES","COMB","SEScat")을 사용하면 name 속성의 길이가 충분하지 않기 때문에 작동하지 않습니다. 나는 이것을 늘리는 방법을 모르겠습니다.

이 질문은 이전 질문에서 제기되었지만 다른 사용자가 별도의 질문으로 사용하는 것이 편리 할 수 ​​있다고 생각했습니다. 나는 그것이 좋기를 바란다.

+0

'nlschools <- 내 (nlschools, {SEScat <- ifelse (SES <= 30, "낮은" ifelse (SES <= 40, "med", "high"))})' – nrussell

+1

@ 토마스 첫 번째 부분은 이전 게시물에서 수정 된 것 같습니다? 이미 답변을 얻은 경우 별도의 질문으로 질문 할 필요가 없습니다. – akrun

+1

이 링크 나는 거기에 이동할 수 있습니다 : http://stackoverflow.com/questions/26235205/how-do-i-subset-split-this-table-bases-on-the-values-of-one-column-in- r/26236620 # 26236620 – rnso

답변

0

이 작업을 수행하는 가장 간단한 방법은 SES 열의 각 값 (for 루프 사용)을 반복하고 각 값이 카테고리 (저, 중 및 고)에 적합한 지 테스트하는 것입니다. if 및 else 문을 사용하면됩니다. 그런 다음 결과를 $ SEScat 새로 작성한 열의 현재 행에 씁니다.

# load data 
a <-read.csv('data.csv') 

# loop through individual SES values 
for (i in a$SES) 
{ 
    # check for low 
    if (i <= 30) 
    { 

    # write to new column 
    a$SEScat = 'low' 

    # check for mid 
    } else if (i > 30 && i <= 40) 
    { 

    # write to new column 
    a$SEScat = 'mid' 

    # check for high 
    } else 
    { 

    # write to new column 
    a$SEScat = 'high' 
} 
} 

# display data frame 
View(a)  
+2

설명의 비트가 좋을 것입니다! – gsamaras

+0

사과에 대한 설명이 없습니다. 데이터 세트에로드 한 다음 각 개별 값이 30보다 작거나 40보다 크거나 40보다 큰지 테스트하면서 for 루프를 사용하여 SES 열의 값을 반복합니다. 조건이 충족되면 새로운 행에 기록됩니다 생성 된 열에 $ SEScat. – blackorwa

+0

작성한 텍스트로 답을 편집하십시오. – gsamaras

0

시도 : 같이

> ddf$SEScat = with(ddf, ifelse(SES<=30,'low', ifelse(SES<=40, 'med', 'high'))) 
> head(ddf) 
    X lang IQ class GS SES COMB SEScat 
1 1 46 15.0 180 29 23 0 low 
2 2 45 14.5 180 29 10 0 low 
3 3 33 9.5 180 29 15 0 low 
4 4 46 11.0 180 29 23 0 low 
5 5 20 8.0 180 29 10 0 low 
6 6 30 9.5 180 29 10 0 low 
> 

나눌 수 있습니다 : How do I subset/split this table bases on the values of one column in R?

관련 문제