又有一个R的问题。已经查看了data.table文档,并看到了以下类似的解决方案:
但不幸的是,虽然它们很接近,但我在理解上还是缺少了些什么。
我的初始数据表包括一个包含结果的表和另一个包含标准的表。这两个表之间有几列是相同的。以下是一个示例(每个表都有更多的列,但它们之间不共享)。
Results
ID Region Locale Medium Name Method
3324 Agate Zone C water Cadmium Z
2432 Gneiss Zone B air Calcium R
2433 Agate Zone A water Molybdenum Q
78882 Agate Zone D water Iron M
Standards
ID Region Locale Medium Name CoeffA CoeffB
3214 Agate Zone A water Cadmium -.243 1.43
3324 Agate Zone C water Cadmium -.243 1.43
2432 Gneiss Zone B water Calcium .432 0.44
78882 Agate Zone D water Iron 1.475 0
存在许多结果不符合标准,有些结果甚至没有标准。
我想做的是将标准表的数学系数值作为新列(C-a
和C-b
)添加到结果表中。最终,我将使用这些值来计算比较标准值。
Results
ID Region Locale Medium Name Method C-a C-b
3324 Agate Zone C water Cadmium Z -.243 1.43
2432 Gneiss Zone B air Calcium R .432 0.44
2433 Agate Zone A water Molybdenum Q NA NA
78882 Agate Zone D water Iron M 1.475 0
我已尝试以下方法但均未成功:
Results[Standards]
将返回标准值,但结果列为NA
Standards[Results]
将返回结果值,但标准列为NA
- 使用
setkey(c("ID","Region","Locale","Medium"))
为Results
和Standards
的公共关键列后,在使用merge(Results, Standards)
,将会返回标准值,但结果列为NA
NA
系数列的结果。请问您有什么建议或意见吗?
非常感谢您的热心帮助。
dput
函数在您的数据表上提供示例数据。看起来您想使用setkey
然后Standards[Results]
。 - jangoreckisetkey
的正确方式。 - Frank