我有一个数据框(model_trin_data_df),包含2986个观测值和645个变量,另一个数据框(input_data_df)包含1个观测值和6个变量。其中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输出数据框应该如下所示 - > 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。
我该如何实现这一点?
提前感谢。
回答:
你可以执行以下操作:
# datainput_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))# 这将给出答案output_df <- sapply(colnames(train_data), function(x){ if(x %in% colnames(input_data)) return (input_data[,x]) else return (0)}, USE.NAMES = F)# 设置名称names(output_df) <- names(train_data)print(output_df)bat blue red ball black 0 1 1 0 3