【发布时间】:2016-10-21 09:52:07
【问题描述】:
我已经建立了一个 data.table 数据框dt1,比如:
State Bounced Opened Delivered
FL 2 1 0
NY 0 1 1
我还有另一个 data.table dt2 的总值:
State Total
NY 2
FL 3
我想找出第一个数据表中每一列的频率百分比:
State Bounced Opened Delivered
FL 66.66 33.33 0
NY 0 50 50
如果我只是* 100 并将所有第一个数据表除以第二个数据表的 Total 列,我有结果,但第一列的州名称变成了 NA,这不好。
如果我喜欢:
dt1[, percen:=Bounced/dt2$Total]
它有效,但我必须对所有列重复该过程。有没有办法复制到除第一列之外的所有列?
第二个问题:检查使用的 Total 值是否正确(即属于正确的状态)的最佳方法是什么?到目前为止,我所做的只是按字母顺序对 State 列进行排序,但我想知道 data.table 是否提供了一种在执行百分比时控制它的方法......
【问题讨论】:
-
这称为 df1、df2 之间的
join操作。在这种情况下,我们是否进行左连接或右连接以及内连接或外连接都没有关系,因为这两个 dfs 状态都已完全填充。您的第二个问题是多余的,因为如果您执行join,它将获得跨表的订单。 -
感谢指点,建议使用
merge? -
好吧,如果它们是普通数据框,可以加入
merge。如果它们是数据表,请使用 DT's join syntax
标签: r join data.table