【发布时间】:2017-04-26 14:29:47
【问题描述】:
我是 R 新手,我有 2 个数据框,如下所示:
df1
T_id U_id U_code score
A_0_1 UHJKI XPOS_hp 134
B_1_3 NBVFR LKJ_mm 543
C_9_0 TRFDA NBV_lp 80
D_9_1 KOIUA TRE_po 212
E_0_1 SDFRQ QAS_np 300
E_0_1 SDKIJ JIT_mx 160
F_0_1 JKOPA TOZ_po 79
df2
T_id U_id U_code score
A_0_1 UHJKI XPOS_hp 150
B_1_3 NBVFR LKJ_mm 520
C_9_0 TRFDG NBJ_po 90
D_9_1 KOIUA TRE_po 250
E_0_1 SDFRQ QAS_np 300
E_0_1 SDKIJ JIT_mx 160
F_0_1 LOLPO JUZ_ic 90
我想比较 df1 中具有完全相同 T_id, U_id and U_codein df2 的条目的 df1 和 df2 的分数,并根据条件 (df1$score >df2$score, df1$score=df2$score, df$1score<df2score) 将它们分为 3 组,如下所示:
df$1score=df2$score
E_0_1 SDFRQ QAS_np 300
E_0_1 SDKIJ JIT_mx 160
df1$score > df2$score
B_1_3 NBVFR LKJ_mm 543
df1$score < df2$score
A_0_1 UHJKI XPOS_hp 150
D_9_1 KOIUA TRE_po 250
我还想存储在 df2 中找不到匹配项的 df1 条目
No matches
C_9_0 TRFDA NBV_lp 80
F_0_1 JKOPA TOZ_po 79
我尝试了以下 R 代码
comparison=function(df1,df2)
{
df1_equal_df2=NULL
df1_greater_than_df2=NULL
df1_smaller_than_df2=NULL
no_match=NULL
if(df$T_id==df2$T_id && df1$U_id == df2$U_id && df1$U_code==df2$U_code && df1$score > df2$score)
{
df1_greater_than_df2=df$T_id
}
else if(df$T_id==df2$T_id && df1$U_id == df2$U_id && df1$U_code==df2$U_code && df1$score < df2$score)
{
df1_smaller_than_df2=df1$id
}
else if(df$T_id==df2$T_id && df1$U_id == df2$U_id && df1$U_code==df2$U_code && df1$score = df2$score)
{
df1_equal_df2=df$1
}
else
{
no_match=df$1
}
}
但是上面没有工作。我怎样才能得到我想要的输出。请指导我
【问题讨论】:
-
为什么不先合并数据呢?然后其他所有操作都很简单。