gpt4 book ai didi

r - 将一个 R 数据表中的列添加到另一个

转载 作者:行者123 更新时间:2023-12-04 00:29:29 25 4
gpt4 key购买 nike

另一个 R 问题。看过data.table vignettes 并看到像这样的解决方案:

但不幸的是,虽然它们很接近,但我在理解上不知何故遗漏了一些东西。

我的初始数据表包括一个包含结果的表格和另一个包含标准的表格。两个表之间有几个列是通用的。这是一个示例(两个表都存在更多列,但它们在两者之间并不常见)。

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-aC-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
  • merge(Results,Standards) 在使用 setkey(c("ID","Region","Locale","Medium")) 作为公共(public)键之后ResultsStandards 的列,生成标准值,结果列为 NA

我原以为其中一种语法肯定会产生值不是 NA 的系数列。

关于我应该在哪里查看或缺少什么的任何建议?

预先感谢您的帮助。

最佳答案

试试这个,你可以不使用 setkey 执行它,如下所示

require(data.table)
newResults <- merge(x = Results, y = Standards, by = "ID", all.x = TRUE)
setnames(newResults,"CoeffA","C-a")
setnames(newResults,"CoeffB","C-b")

newResults
ID Region Locale Medium Name Method C-a C-b
2432 Gneiss Zone B air Calcium R .432 0.44
2433 Agate Zone A water Molybdenum Q NA NA
3324 Agate Zone C water Cadmium Z -.243 1.43
78882 Agate Zone D water Iron M 1.475 0

如果您不想要 NA:

newResults[is.na(newResults)] <- 0   #replace NA with Zero
newResults[is.na(newResults)] <- "No value available" #replace NA with Text

关于r - 将一个 R 数据表中的列添加到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29480815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com