相关疑难解决方法(0)

根据列名合并data.tables

我正在尝试与data.tables进行一些左连接合并.包描述引用

在所有连接中,列的名称无关紧要; x键的列按顺序连接

我明白我可以使用.data.table[data.table:::merge.data.table

我想要的是:合并X和Y指定键(如基础合并中的by.x和by.y, - >为什么要取消它?)

我想我有

DT = data.table(x=rep(c("a","b","c"),each=3),y=c(1,3,6),v=1:9,key="x,y,v")
DT1 = data.frame(x1=c("aa","bb","cc"),y1=c(1,3,6),v1=1:3,key="x1,y1,v1")
Run Code Online (Sandbox Code Playgroud)

我希望这个输出:

#data.table:::merge is masking I don't know how to call the base version of merge anymore
R) {base::merge}(DT,DT1,by.x="y",by.y="y1") 
y x v x1 v1
1 1 a 1 aa  1
2 1 c 7 aa  1
3 1 b 4 aa  1
4 3 a 2 bb  2
5 3 b 5 bb  2
6 3 c 8 bb  2
7 6 b 6 …
Run Code Online (Sandbox Code Playgroud)

r data.table

13
推荐指数
2
解决办法
1万
查看次数

合并具有不同列名的表

如果我理解正确,默认情况下,data.table通过比较设置为键并具有相同名称的列来合并两个表.如果我有不同列名的表,我该怎么写?例如:

set.seed(123)
DT1<-data.table(col1=sample(letters,5,replace=TRUE),col2=sample(LETTERS[1:5],5,replace=TRUE),col3=sample(1:2,5,replace=TRUE))
DT2<-data.table(col4=sample(1:3,10,replace=TRUE),col5=sample(LETTERS[1:5],10,replace=TRUE),col6=sample(1:100,10,replace=TRUE))
(DT1)
(DT2)

> (DT1)
   col1 col2 col3
1:    h    A    2
2:    u    C    1
3:    k    E    2
4:    w    C    2
5:    y    C    1
> (DT2)
    col4 col5 col6
 1:    3    D   48
 2:    1    C   76
 3:    1    C   22
 4:    1    B   32
 5:    3    A   24
 6:    3    E   15
 7:    3    E   42
 8:    2    D   42
 9:    3    D   37
10:    2    A   16
Run Code Online (Sandbox Code Playgroud)

我应该写什么DT1[ …

merge r data.table

7
推荐指数
1
解决办法
4689
查看次数

左外连接data.table,具有不同的关键变量名称

首先我要说的是,这是我在堆栈溢出时发布的第一个问题.如果我需要在我的问题中更改样式,格式等,请告诉我.

我想对两个数据表执行左外连接操作,其中一个exra条件允许我对两个数据表中的关键变量使用不同的名称.例:

DT1 = data.table(x1=c("b","c", "a", "b", "a", "b"),   x2a=1:6,m1=seq(10,60,by=10))
setkey(DT1,x1,x2a)
> DT1
   x1 x2a m1
1:  a   3 30
2:  a   5 50
3:  b   1 10
4:  b   4 40
5:  b   6 60
6:  c   2 20
DT2 = data.table(x1=c("b","d", "c", "b","a","a"),x2b=c(1,4,7,6," "," "),m2=5:10)
setkey(DT2,x1,x2b)
> DT2
   x1 x2b m2
1:  a      9
2:  a     10
3:  b   1  5
4:  b   6  8
5:  c   7  7
6:  d   4  6
############# first, I use the …
Run Code Online (Sandbox Code Playgroud)

r data.table

4
推荐指数
1
解决办法
2548
查看次数

根据不同的列名连接表

我正在观看Greg Reda关于Pandas的视频[1],看看Pandas可以做些什么来与data.table进行比较.我很惊讶地发现在data.table中连接表是多么困难.如果您观看视频,特别是@ 49:00到@ 52:00分钟,您会看到Pandas允许您根据不同的列名称连接表格,并且您可以为左右表格选择不同的后缀.我知道setkey用于优化目的[2],并了解如何使用相同的列名连接表[3].我尝试了data.table的合并,但是by=使用不同的列名设置关键字参数有很多困难.所以这是我的问题.

在data.table中,是否可以基于不同的列名连接表?如果是这样,怎么样?如果没有,为什么不呢?此外,更有用的是,这个功能不是很有用吗?我觉得这个问题没有提前出现令人惊讶.如果之前已经讨论过,请原谅我(并请指出他们).

顺便说一句,Greg正在谈论的数据可以在他的github上找到[4].

  1. https://www.youtube.com/watch?v=1uVWjdAbgBg
  2. /sf/answers/958073791/
  3. 在R data.table中连接具有相同(非键控)列名的表
  4. https://github.com/gjreda/pydata2014nyc

r data.table

3
推荐指数
1
解决办法
2341
查看次数

标签 统计

data.table ×4

r ×4

merge ×1