R / data.table()在另一个data.table的命名子集上合并

尖叫猫头鹰

我正在尝试将几个文件放在一起,并且需要对在循环内创建的列名进行一堆合并。我可以很好地使用,data.frame()但是在使用类似的代码时遇到问题data.table()

library(data.table)

df1 <- data.frame(id = 1:20, col1 =  runif(20))
df2 <- data.frame(id = 1:20, col1 =  runif(20))

newColNum <- 5
newColName <- paste('col',newColNum ,sep='')

df1[,newColName] <- runif(20)

df2 <- merge(df2, df1[,c('id',newColName)], by = 'id', all.x = T) # Works fine
######################

dt1 <- data.table(id = 1:20, col1 =  runif(20))
dt2 <- data.table(id = 1:20, col1 =  runif(20))

newColNum <- 5
newColName <- paste('col',newColNum ,sep='')

dt1[,newColName] <- runif(20)

dt2 <- merge(dt2, dt1[,c('id',newColName)], by = 'id', all.x = T) # Doesn't work

有什么建议么?

乔什·奥布莱恩

这实际上与无关merge(),并且与j(默认情况下)由解释索引(即列)的方式有关[.data.table()

您可以通过设置来使整个语句正常工作with=FALSE,这将导致对j索引的解释与在a中的解释相同data.frame

dt2 <- merge(dt2, dt1[,c('id',newColName), with=FALSE], by = 'id', all.x = T)
head(dt2, 3)
#    id      col1       col5
# 1:  1 0.4954940 0.07779748
# 2:  2 0.1498613 0.12707070
# 3:  3 0.8969374 0.66894157

更确切地说,来自?data.table

with:默认情况下,“ with = TRUE”,“ j”在“ x”框架内求值。列名称可用作变量。当“ with = FALSE”时,“ j”是要选择的名称或位置的向量。

请注意,可以通过将列存储在变量中来避免这种情况,如下所示:

cols = c('id', newColName)
dt1[ , ..cols]

.. 信号以“查找一个级别”

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从另一个data.table重命名R data.table中的级别?

来自分类Dev

如何从另一个data.table重命名R data.table中的级别?

来自分类Dev

如何按列将R中的一个data.table除以另一个?

来自分类Dev

r data.table条件和引用/从另一个单独的data.table执行查询

来自分类Dev

在另一个字段上使用 RegEx 在 R data.table 中创建新字段

来自分类Dev

r-data.table连接,然后将一个表中的所有列添加到另一个表中

来自分类Dev

将data.table的子集分配给另一个data.table的子集

来自分类Dev

根据另一个data.table中的值更新data.table

来自分类Dev

按名称在另一个data.table中的data.table引用列

来自分类Dev

在data.table中:遍历另一个data.table的行

来自分类Dev

根据另一个data.table值递增data.table值

来自分类Dev

根据与另一个 data.table 的匹配更新 data.table 列

来自分类Dev

使用一组按总和计算的当前值,使用 data.table 计算 R 中的另一个值

来自分类Dev

通过匹配另一个data.table的列来对data.table进行子集

来自分类Dev

使用另一个data.table子化一个data.table

来自分类Dev

根据另一个data.table中的值填充一个data.table

来自分类Dev

根据在另一个data.table上的行值查找来创建列

来自分类Dev

使用来自另一个data.table的引用创建新变量

来自分类Dev

根据另一个向量的字符串匹配过滤data.table

来自分类Dev

根据先前的值和data.table中的另一个变量填充变量

来自分类Dev

R从一个向量的最大值子集data.frame到另一个向量分组

来自分类Dev

创建列出一个变量与另一个变量分组的值的data.table

来自分类Dev

创建列出一个变量与另一个变量分组的值的data.table

来自分类Dev

从另一个创建一个新的 Data.table 并匹配一个变量上的向量列表

来自分类Dev

在R中分配一个data.table slice

来自分类Dev

在R中分配一个data.table slice

来自分类Dev

在R中使用合并定义data.table的子集

来自分类Dev

包中的错误取决于另一个依赖于data.table的包

来自分类Dev

将任意类的列转换为另一个data.table中匹配列的类

Related 相关文章

  1. 1

    如何从另一个data.table重命名R data.table中的级别?

  2. 2

    如何从另一个data.table重命名R data.table中的级别?

  3. 3

    如何按列将R中的一个data.table除以另一个?

  4. 4

    r data.table条件和引用/从另一个单独的data.table执行查询

  5. 5

    在另一个字段上使用 RegEx 在 R data.table 中创建新字段

  6. 6

    r-data.table连接,然后将一个表中的所有列添加到另一个表中

  7. 7

    将data.table的子集分配给另一个data.table的子集

  8. 8

    根据另一个data.table中的值更新data.table

  9. 9

    按名称在另一个data.table中的data.table引用列

  10. 10

    在data.table中:遍历另一个data.table的行

  11. 11

    根据另一个data.table值递增data.table值

  12. 12

    根据与另一个 data.table 的匹配更新 data.table 列

  13. 13

    使用一组按总和计算的当前值,使用 data.table 计算 R 中的另一个值

  14. 14

    通过匹配另一个data.table的列来对data.table进行子集

  15. 15

    使用另一个data.table子化一个data.table

  16. 16

    根据另一个data.table中的值填充一个data.table

  17. 17

    根据在另一个data.table上的行值查找来创建列

  18. 18

    使用来自另一个data.table的引用创建新变量

  19. 19

    根据另一个向量的字符串匹配过滤data.table

  20. 20

    根据先前的值和data.table中的另一个变量填充变量

  21. 21

    R从一个向量的最大值子集data.frame到另一个向量分组

  22. 22

    创建列出一个变量与另一个变量分组的值的data.table

  23. 23

    创建列出一个变量与另一个变量分组的值的data.table

  24. 24

    从另一个创建一个新的 Data.table 并匹配一个变量上的向量列表

  25. 25

    在R中分配一个data.table slice

  26. 26

    在R中分配一个data.table slice

  27. 27

    在R中使用合并定义data.table的子集

  28. 28

    包中的错误取决于另一个依赖于data.table的包

  29. 29

    将任意类的列转换为另一个data.table中匹配列的类

热门标签

归档