我有一个更大的数据集,我需要将列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
对于较小的数据集,我可以通过recode
包中的car
函数手动执行此操作。
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
我需要一个适当的功能或代码来代替重新编码中的手动输入。
答案 0 :(得分:1)
我们可以使用match
base 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