我从数据框(DF1)构建了一个预测模型。我现在想将该模型应用于包含DF1中的一些变量的不同数据帧(DF2),但不是全部。
我需要做的是创建一个if / then语句,函数等,它将删除DF2中但不存在于DF1中的变量,并为DF1中存在但DF2中不存在的变量创建0列。 / p>
以下是初始数据集的外观:
# DF_1
cust_id<- c(1234,1235,1236,1237,1238)
var_1<- c(4,5,7,8,7)
var_2<- c(7,9,7,8,9)
var_3<- c(5,7,8,5,4)
df_1<- data.frame(cust_id,var_1,var_2,var_3)
# DF_2
cust_id<- c(2123,2124,2125,2126,2127)
var_1<- c(45,45,48,38,48)
var_4<- c(65,62,61,57,48)
var_5<- c(15,18,14,25,23)
df_2<- data.frame(cust_id,var_1,var_4,var_5)
df_1
df_2
手动编码,这就是最终数据集的样子:
# DF_2b
cust_id<- c(2123,2124,2125,2126,2127)
var_1<- c(45,45,48,38,48)
var_2<- 0
var_3<- 0
df_2b<- data.frame(cust_id,var_1,var_2,var_3)
df_2b
所以我需要的是从 df_2 中删除 var_4 和 var_5 的代码,并插入标题为 var_2 0的零列strong>和 var_3 进入 df_2
答案 0 :(得分:1)
试试这段代码
df <- df_2[, intersect(names(df_2), names(df_1))]
df[, setdiff(names(df_1), names(df_2))] <- 0
df
输出
cust_id var_1 var_2 var_3
1 2123 45 0 0
2 2124 45 0 0
3 2125 48 0 0
4 2126 38 0 0
5 2127 48 0 0