r - 将两个 data.table 合并到一个新的 data.table
问题描述
我有两个数据表
dt.1 <- data.table(id=c("id.1", "id.2", "id.3", "id.4", "id.5"), param = c("red", "green", "blue", "blue", "red"))
dt.2 <- data.table(red = c(0.02, 0.03, 0.04, 0.02), green=c(0.01, 0.01, 0.01, 0.02), blue=c(0.01, 0.03, 0.03, 0.01))
看起来像这样
id param
1: id.1 red
2: id.2 green
3: id.3 blue
4: id.4 blue
5: id.5 red
red green blue
1: 0.02 0.01 0.01
2: 0.03 0.01 0.03
3: 0.04 0.01 0.03
4: 0.02 0.02 0.01
现在我想将它们组合起来并获得这样的表格
id.1 id.2 id.3 id.4 id.5
1: 0.02 0.01 0.01 0.01 0.02
2: 0.03 0.01 0.03 0.03 0.03
3: 0.04 0.01 0.03 0.03 0.04
4: 0.02 0.02 0.01 0.01 0.02
我怎样才能做到这一点?
解决方案
尝试
library(data.table)
out <- merge(melt(dt.2, variable.name = "param"), # melt dt.2 before merging
dt.1,
by = 'param',
allow.cartesian = TRUE)
out <- dcast(out, rowid(id) ~ id, value.var = "value")[, id := NULL]
out
# id.1 id.2 id.3 id.4 id.5
#1: 0.02 0.01 0.01 0.01 0.02
#2: 0.03 0.01 0.03 0.03 0.03
#3: 0.04 0.01 0.03 0.03 0.04
#4: 0.02 0.02 0.01 0.01 0.02
推荐阅读
- selenium-webdriver - 用于捕获请求和响应的 Selenium 和 BrowserMob 代理
- typescript - Puppeteer:如何点击带有特定标签的按钮?
- python - K-means 无法正确绘制
- excel - 尝试根据 ID 计算一系列数据的平均值、最小值和最大值
- r - SHINY中侧边栏面板的垂直滚动
- python - Django url 路径,home url 总是覆盖路径('',views.home,name='home')
- php - codeigniter 无法使用未定义的变量传递变量结果(在路由之后)
- jquery - Oracle APEX 19.2 在浏览器关闭时关闭顶点会话
- python - 找不到变量,即找不到键“VariableDoesNotExist at /genres/”
- jquery - 为什么我不能使用 jQuery 在窗口单击处理程序中定位特定类?