【发布时间】:2021-10-25 08:15:42
【问题描述】:
我想操作两个数据表的列来创建一个桑基图。
我有一个2018 年的数据表和一个2019 的数据表(两者都具有相同的列名/顺序):
dt.2018 <- structure(list(Year = c(2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L, 2018L),
id = c(100236L, 101554L, 111328L, 124213L, 127434L, 128509L, 130058L, 130192L, 130224L, 130309L),
EV = c(-33498.61, 0, -31117.17, 70950.43, -37984.99, 0, 0, -93820830.01, -7852622.13, -245712.8),
group = structure(c(1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L), .Label = c("0", "1", "2", "3"), class = "factor")),
class = c("data.table", "data.frame"), row.names = c(NA, -10L))
dt.2019 <- structure(list(Year = c(2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2019L),
id = c(100236L, 101554L, 111328L, 124213L, 127434L, 128003L, 128509L, 130058L, 130192L, 130351L),
EV = c(-130944.64, 21951918.61, 15335.68, 101518.72, 36552.26, 0, 78507.63, 0, 0, 276820967.02),
group = structure(c(1L, 4L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("0", "1", "2", "3"), class = "factor")),
class = c("data.table", "data.frame"), row.names = c(NA, -10L))
首先我想比较id 列。
-
dt.2019中的ids,不在dt.2018中的可以删除(整行)。 - 对于
dt.2018中的ids,它们不在dt.2019中,我们必须将整行复制/绑定到dt.2019,然后将group的数量替换为dt.2019中的8. - 最后我想对两者的
id列进行排序(相同的id必须位于相同的行索引)。 - 在
dt.2019中替换group整数:将c(0,1,2,3)替换为c(4,5,6,7)和8应该保持不变。
我怎样才能快速有效地做到这一点?
【问题讨论】:
-
对于未来的读者:here 您可以找到相关/以前的问题。
标签: r replace data.table data-manipulation