在R中,if / then语句将字段从一个数据框合并到另一个数据框中吗?

时间:2017-12-04 14:34:31

标签: r dataframe

我从数据框(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 var_3 进入 df_2

1 个答案:

答案 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