##首先把data根据field3分成两部分
df1 <- df[df$field3 == 1, ]
df2 <- df[df$field3 == 2, ]
##然后merge
df12 <- merge(df1, df2, by = c("field1","field2"))
##然后提取结果,结果是6列的:
df6 <- df12[df12$field4.y-df12$field4.x > 100, ]
##想要四列的话:
df41 <- df6[,1:4]
df42 <- df6[,c(1,2,5,6)]
colnames(df41) <- colnames(df)
colnames(df42) <- colnames(df)
df4 <- rbind(df41, df42)
df4 <- df4[order(df4$field1, df4$field2), ]