2016-06-28 65 views
1

我有一個較大的數據集,我需要將列numercal variable更改爲categorical variable。的數據的示例是以下:需要重新編碼列數值變量

dat1 <- read.table(header=TRUE, text=" 
        ID Pa Gu Ta 
        8645 1 Gel294 Tel452 
        6228 2 Gel294 Tel467 
        5830 3 Gel294 Tel467 
        1844 3 Gel295 Tel467 
        4461 4 Gel295 Tel467 
        2119 5 Gel294 Tel452 
        2119 5 Gel294 Tel452 
        ") 
dat1 
    ID Pa  Gu  Ta 
1 8645 1 Gel294 Tel452 
2 6228 2 Gel294 Tel467 
3 5830 3 Gel294 Tel467 
4 1844 3 Gel295 Tel467 
5 4461 4 Gel295 Tel467 
6 2119 5 Gel294 Tel452 
7 2119 5 Gel294 Tel452 

Pa列中的變量由以下取代:

dat2 <- read.table(header=TRUE, text=" 
        Pa Abbr 
        1 MNDF 
        2 CVDE 
        3 EEED 
        4 WERD 
        5 PPOL 
        ") 
dat2 
    Pa Abbr 
1 1 MNDF 
2 2 CVDE 
3 3 EEED 
4 4 WERD 
5 5 PPOL 

對於較小的數據集,我可以在car手動完成由recode功能包。

library(car) 
dat1$Pa <- recode(dat1$Pa, "1='MNDF'; 2='CVDE'; 3='EEED'; 4='WERD'; 5='PPOL'") 
dat1 
    ID Pa  Gu  Ta 
1 8645 MNDF Gel294 Tel452 
2 6228 CVDE Gel294 Tel467 
3 5830 EEED Gel294 Tel467 
4 1844 EEED Gel295 Tel467 
5 4461 WERD Gel295 Tel467 
6 2119 PPOL Gel294 Tel452 
7 2119 PPOL Gel294 Tel452 

我需要一個適當的功能或代碼,可以代替手動輸入重新編碼。

回答

1

我們可以使用matchbase R

dat1$Pa <- dat2$Abbr[match(dat1$Pa, dat2$Pa)] 
dat1 
# ID Pa  Gu  Ta 
#1 8645 MNDF Gel294 Tel452 
#2 6228 CVDE Gel294 Tel467 
#3 5830 EEED Gel294 Tel467 
#4 1844 EEED Gel295 Tel467 
#5 4461 WERD Gel295 Tel467 
#6 2119 PPOL Gel294 Tel452 
#7 2119 PPOL Gel294 Tel452