r - R:如何简单地比较 2 个数据框中列的值
问题描述
我正在比较两个数据框:FU和FO 以下是它们的外观的简短示例
"Model_ID" "FU_Lin_Period" "FU_Growth_rate"
2 0.72127 0.0093333
3 0.69281 0.015857
4 0.66735 0.021103
5 0.64414 0.024205
6 0.62288 0.026568
7 0.60318 0.027749
8 0.58472 0.028161
9 0.56734 0.028008
10 0.55085 0.027309
11 0.53522 0.026068
12 0.52029 0.024684
13 0.50603 0.022866
14 0.49237 0.020991
15 0.47928 0.018773
"Model_ID" "FO_Lin_Period" "FO_Growth_rate"
7 0.44398 0.008868
8 0.43114 0.01674
9 0.41896 0.023248
10 0.40728 0.028641
11 0.39615 0.032192
12 0.38543 0.03543
13 0.37517 0.03692
14 0.36525 0.038427
15 0.35573 0.038195
如您所知,它们并不完全相同Model_ID
基本上,我想要做的是遍历Model_ID
两个表中的每一个,比较给定模型 ID 的 FU 或 FO 的增长率是否更大,然后......
- 如果 FU 较大(或型号存在 FU 而 FO 不存在),则将型号放入名为
selected_FU
- 如果 FO 较大(或型号存在 FO 而 FU 不存在),则将型号放入名为
selected_FO
有没有办法在不使用循环的情况下做到这一点?
解决方案
data.table替代使用与tidyverse答案类似的逻辑。
将NA
s替换为-Inf
inity,做两个FU/FO_Growth_rate
变量的比较,标记哪个组的值较大,然后将 s 选Model_ID
入请求的变量中。
library(data.table)
setDT(FU)
setDT(FO)
out <- merge(FU, FO, by="Model_ID", all=TRUE)[,
"gr_sel" := c("FO","FU")[(nafill(FU_Growth_rate, fill=-Inf) >
nafill(FO_Growth_rate, fill=-Inf)) + 1],
]
selected_FU <- out[gr_sel == "FU", Model_ID]
selected_FO <- out[gr_sel == "FO", Model_ID]
使用的数据:
FU <- read.table(text="Model_ID FU_Lin_Period FU_Growth_rate\n2 0.72127 0.0093333\n3 0.69281 0.015857\n4 0.66735 0.021103\n5 0.64414 0.024205\n6 0.62288 0.026568\n7 0.60318 0.027749\n8 0.58472 0.028161\n9 0.56734 0.028008\n10 0.55085 0.027309\n11 0.53522 0.026068\n12 0.52029 0.024684\n13 0.50603 0.022866\n14 0.49237 0.020991\n15 0.47928 0.018773", header=TRUE)
FO <- read.table(text="Model_ID FO_Lin_Period FO_Growth_rate\n7 0.44398 0.008868\n8 0.43114 0.01674\n9 0.41896 0.023248\n10 0.40728 0.028641\n11 0.39615 0.032192\n12 0.38543 0.03543\n13 0.37517 0.03692\n14 0.36525 0.038427\n15 0.35573 0.038195", header=TRUE)
推荐阅读
- php - PHP 问题。我收到电子邮件,但没有来自网站的用户输入
- python - 分组功能优化
- java - java.io.EOFException:由于在检索数据时输入结束,没有要映射到对象的内容
- r - 视图中的错误:“名称”属性 [1] 必须与向量 [0] 的长度相同
- html - HTML5/CSS3:图像作为弹性项目
- ckan - 从外部 API 创建 CKAN 数据集并同步数据集
- ios - 我在哪里可以下载 WWDC2019 源代码?
- python - 有没有办法在 itertools.combinations() 中找到 nᵗʰ 条目而不将整个事物转换为列表?
- amazon-web-services - AWS 中国应用程序负载均衡器 ARN 无效
- javascript - HTML如何在单击另一个元素(例如按钮)后保持输入的焦点状态