2014-11-25 2 views
2

특정 사무실이 위치한 상태의 열을 포함하는 데이터 집합이 있습니다. 그 칼럼을 가지고 미국의 어느 지역에 사무실이 위치해 있는지를 나타내는 새로운 칼럼을 만들고 싶습니다. 주 컬럼에는 각 주에 대한 우편 약어가 있습니다 (예 : NY는 뉴욕을 의미 함). 그리고 나는 US Census Bureau 's Regions를 사용 중입니다.if/else 문을 사용하여 새 변수 열 만들기

다음은 모의 예입니다. 나는 지역 열이없는,하지만 난 그것을 만들 :

Store State Region 
A  FL  South 
B  NY  Northeast 
C  CA  West 
D  IL  Midwest 
E  MA  Northeast 

하는의이 간단하고 그냥 내가 동북에만 사무실을 표시 할 가정 해 봅시다 보자. 다음 구문을 사용했습니다 :

stores$Northeast<-if(
     stores$state=="ME"|"NH"|"VT"|"MA"|"RI"|"CT"|"NY"|"PA"|"NJ"){ 
print("Northeast") 
} else{print("Non-northeast") 
} 

그러나 오류 메시지가 나타나는 | 문자에 대한 작업이 작동하지 않습니다. 대신 내가 사용해야하는 다른 기능이 있습니까?

+1

원하는 솔루션을위한 구체적인 방법이 필요합니다. Data-Munger Guru가 말했듯이, "어떻게하고 싶은지 말해주세요." –

답변

6

사람들의 타이핑 시간을 절약하기 위해 게시하고 있습니다. 이 작업을 매우 효율적으로 수행하는 데 사용할 수있는 기본 R 설치의 일부로 이미 사용할 수있는 두 가지 벡터가 있습니다 (state.abbstate.region). 이름이 지정된 벡터가있는 경우 이름을 통해 조회 용으로 색인을 생성 할 수 있습니다. 그들은 둘 다 문자로 요소로 변환 할 필요가 (인덱스도 해제 인수 분해 할 필요) :

# Do read `?states`. Hey, S was invented in the US, but why not some Yuropean constants? 
mock <-read.table(text="Store State  
A  FL  
B  NY  
C  CA  
D  IL  
E  MA  ",head=TRUE) 
stat <- as.character(state.region) 
> names(stat) <- as.character(state.abb) 

> mock$Region <- stat[as.character(mock$State)] 
> mock 
    Store State  Region 
1  A FL   South 
2  B NY  Northeast 
3  C CA   West 
4  D IL North Central 
5  E MA  Northeast 

당신이에 "편집"지역 할당을하려면이 수행

> stat["IL"] <- "Midwest" 
> mock$Region <- stat[as.character(mock$State)] 
> mock 
    Store State Region 
1  A FL  South 
2  B NY Northeast 
3  C CA  West 
4  D IL Midwest 
5  E MA Northeast 
+0

잘 알고 있습니다. – beroe

1

%in% 연산자가 필요합니다! 당신이 다른 지역을 정의하는 데에 갈 경우 특히,

NE = c("ME","NH","VT","MA","RI","CT","NY","PA","NJ") 

if stores$state %in% NE { 
    print("Northeast") 
} else { 
    print("Non-northeast") 
} 

당신은 또한 새로운 변수이 방법을 정의 할 수 있습니다 :

stores$Northeast <- ifelse(stores$state %in% c("ME", "NH", "VT", "MA", "RI", "CT", "NY", "PA", "NJ"), "Northeast", "Non-northeast") 

환호

+1

나는 이것을 시도했지만 오류 메시지를 표시합니다. 단지 모든 것을 "북동쪽이 아닌"것으로 규정합니다. 경고 메시지 : if (crime06_07 $ State % in % c ("ME", "NH", "VT", "MA", "RI", "CT", : ) 길이가 1보다 크고 첫 번째 요소 만 사용됩니다 –

+0

감사합니다! –

+0

멋지다! – Athos

2

당신은 아마 여기 %in% 연산자를 사용한다 :

stores$region = "Non-northeast" 
stores$region[stores$state %in% NE] = "Northeast" 
관련 문제