我正在尝试在 R 中进行一些数据操作。我有 2 个数据框,一个是训练数据,另一个是测试数据,所有数据都是分类数据并存储为因子变量。
数据中有一些 NA,我正在尝试将它们转换为“-1”。当我为训练数据做这件事时,一切都很好,但对测试数据却不是。
在我运行的循环中有些东西会改变值,但我不知道是什么。
这是之前的:
> class(catTrain1[,"Cat_111"])
[1] "factor"
> class(catTest1[,"Cat_111"])
[1] "factor"
> table(catTrain1[,"Cat_111"])
1 2
726 25
> table(catTest1[,"Cat_111"])
0 1 2
1 503 15
这是循环:
> for(i in 1:ncol(catTrain1)){
+ catTrain1[,i] <- as.factor(as.character(ifelse(is.na(catTrain1[,i]), "-1", catTrain1[,i])))
+ }
> for(i in 1:ncol(catTest1)){
+ catTest1[,i] <- as.factor(as.character(ifelse(is.na(catTest1[,i]), "-1", catTest1[,i])))
+ }
后面是这样的:
> table(catTrain1[,"Cat_111"])
1 2
726 25
> table(catTest1[,"Cat_111"])
1 2 3
1 503 15
我已经看到使用字符-> 数字转换时上移了一个,但我无法弄清楚为什么会发生这种情况,尤其是对于其中一个数据帧/循环。
有什么建议么?