【发布时间】:2015-09-19 16:50:13
【问题描述】:
我想做内部连接,条件是它应该给我减去 2 列。
df1 = data.frame(Term = c("T1","T2","T3"), Sec = c("s1","s2","s3"), Value =c(10,30,30))
df2 = data.frame(Term = c("T1","T2","T3"), Sec = c("s1","s3","s2"), Value =c(40,20,10)
df1
Term Sec Value
T1 s1 10
T2 s2 30
T3 s3 30
df2
Term Sec Value
T1 s1 40
T2 s3 20
T3 s2 10
我想要的结果是
Term Sec Value
T1 s1 30
T2 s2 20
T3 s3 10
基本上我要加入两个表,对于我要使用的列值
Value= abs(df1$Value - df2$Value)
我一直在努力,但找不到任何方法在基础 R 中执行此条件合并。可能如果基础 R 不可能,dplyr 应该能够使用 inner_join() 做到这一点,但我不太清楚这个包。
因此,任何关于 base R 和/或 dplyr 的建议都将不胜感激
编辑
我已按要求包含了我的原始数据。我的数据在这里
https://jsfiddle.net/6z6smk80/1/
DF1 是第一个表,DF2 是第二个。 DF2 从第 168 行开始。
所有逻辑相同,我想加入这两个长度为 160 行的表。我想通过 ID 加入并从两个表中获取列值的差异。结果数据集应具有相同的行数,即 160 行,并带有额外的列差异
【问题讨论】:
-
不清楚您是如何加入表格的。如果它在单列上,您可以使用
with(merge(df1, df2, by = "Sec"), abs(Value.x - Value.y)。 -
不幸的是,他的样本数据集并没有让我们真正看到它是什么类型的连接。
标签: r merge inner-join dplyr