我有一个数据帧(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。
我如何才能实现这一目标。
提前致谢。
答案 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