R:用指示值替换预测值

R:用指示值替换预测值,r,matrix,replace,machine-learning,subset,R,Matrix,Replace,Machine Learning,Subset,我有一个矩阵,它是对ID和Rating的19 mil预测观察值。我想替换实际评级中ID的预测评级 以下是我试图实现的目标的演示: train <- data.frame(1:10,c(1,2,NA,4,5,NA,7,8,NA,10)) names(train) <- c("ID", "Rating") pred <- data.frame(1:10, c(1,1,3,4,2,4,5,6,7,1)) names(pred) <- c("ID", "Rating") tra

我有一个矩阵,它是对
ID
Rating
的19 mil预测观察值。我想替换实际
评级中
ID
的预测
评级

以下是我试图实现的目标的演示:

train <- data.frame(1:10,c(1,2,NA,4,5,NA,7,8,NA,10))
names(train) <- c("ID", "Rating")
pred <- data.frame(1:10, c(1,1,3,4,2,4,5,6,7,1))
names(pred) <- c("ID", "Rating")

train只需使用
[]
括号和
is.na
对数据进行子集化即可

> train$Rating[is.na(train$Rating)] = pred$Rating[is.na(train$Rating)]
> train
   ID Rating
1   1      1
2   2      2
3   3      3
4   4      4
5   5      5
6   6      4
7   7      7
8   8      8
9   9      7
10 10     10
或者,反过来说:

> pred$Rating[!is.na(train$Rating)] = train$Rating[!is.na(train$Rating)]
> pred
   ID Rating
1   1      1
2   2      2
3   3      3
4   4      4
5   5      5
6   6      4
7   7      7
8   8      8
9   9      7
10 10     10

不过,请确保两个ID的顺序相同。
> pred$Rating[!is.na(train$Rating)] = train$Rating[!is.na(train$Rating)]
> pred
   ID Rating
1   1      1
2   2      2
3   3      3
4   4      4
5   5      5
6   6      4
7   7      7
8   8      8
9   9      7
10 10     10