重新编码列数值变量
Recoding Column Numerical Variables
我有一个更大的数据集,我需要将列 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
我需要一个合适的函数或代码来代替重新编码中的手动输入。
我们可以使用 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
我有一个更大的数据集,我需要将列 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
我需要一个合适的函数或代码来代替重新编码中的手动输入。
我们可以使用 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