比较两个数据帧并使用R存储数据

时间:2018-03-22 17:59:21

标签: r machine-learning

我有一个数据帧(model_trin_data_df)有364个变量的2986个观测值,另一个数据帧(input_data_df)有6个变量的1个观察值。 model_trin_data_df 包含 input_data_df的所有6个变量。 现在我想通过比较所有变量所在的数据帧(即2992个观测值)来创建另一个数据帧,只有一个观察。

> input_data_df
  blue red white black green gold
   1     1    1      3    1    1

> train_data_df
  bat blue red ball come white black cow green tiger gold go 
  1   2    0    1   0     0    1    0    0     0    0    1
  0   0    0    0   0     1    0    2    0     0    1    0

Out out dataframe should be like -     
    > output_data_df
     bat blue red ball come white black cow green tiger gold go 
     0   1    1    0   0     1    3    0    1     0    1    0

我并不担心 train_data_df 的观察结果。 我需要的是 output_data_df 正确包含 input_data_df 的所有观察结果,其余变量包含0。

我如何才能实现这一目标。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

# data
input_data <- data.frame(blue=1, red=1, white=1, black=3, green=1, gold=1)
train_data <- data.frame(bat=c(1,0),
                         blue=c(2,0),
                         red=c(0,0),
                         ball=c(1,0),
                         black=c(1,0))

# this gives answer
output_df <- sapply(colnames(train_data), function(x){

    if(x %in% colnames(input_data)) return (input_data[,x])
    else return (0)

}, USE.NAMES = F)

# set names
names(output_df) <- names(train_data)

print(output_df)

bat  blue   red  ball black 
 0     1     1     0     3