在R中的“data.table”中,有没有一种方法可以根据索引快速为行赋值?

在R中的“data.table”中,有没有一种方法可以根据索引快速为行赋值?,r,data.table,R,Data.table,我目前正在使用一个data.table表,该表大约有2亿行 >table user age A 19 B 22 C 18 D 13 E 93 F 15 G 11 H 16 I 33 J 25 K 44 L 23 M 76 N 34 O 18 P 32 Q

我目前正在使用一个data.table表,该表大约有2亿行

>table
user     age
A        19
B        22
C        18
D        13
E        93
F        15
G        11
H        16
I        33
J        25
K        44
L        23
M        76
N        34
O        18
P        32
Q        55
此外,我还有一个“索引”表,如下所示:

> index
row_number     count
1              5
3              7
7              12
8              100
12             3
14             4
我的目标是能够将
count
列附加到
表中。
行数
列表示
的行数。因此,当
行数
等于1时,我们将值5附加到
的用户A和年龄19行。对于
行数
等于3,我们将值7插入到用户C和18岁。之间存在间隙,因此我想用0填充它们

所以总的来说,我想:

>table
user     age    count 
A        19     5
B        22     0
C        18     7
D        13     0
E        93     0
F        15     0
G        11     12
H        16     100
I        33     0
J        25     0
K        44     0
L        23     3
M        76     0
N        34     4
O        18     0
P        32     0
Q        55     0
到目前为止,我的代码是:

table[,count:= count, by=.N]

但是,我无法获得正确的排序。有人知道我如何在
data.table
中实现这一点吗?谢谢大家!

这里是一种使用
set

# set everything to 0
set(table, j = 'count', value = 0)
# replace the appropriate indices with the relevant values
set(table, j = 'count', i = index[['rownumber']], j = index[['count']])

下面是使用
set

# set everything to 0
set(table, j = 'count', value = 0)
# replace the appropriate indices with the relevant values
set(table, j = 'count', i = index[['rownumber']], j = index[['count']])

下面是使用
set

# set everything to 0
set(table, j = 'count', value = 0)
# replace the appropriate indices with the relevant values
set(table, j = 'count', i = index[['rownumber']], j = index[['count']])

下面是使用
set

# set everything to 0
set(table, j = 'count', value = 0)
# replace the appropriate indices with the relevant values
set(table, j = 'count', i = index[['rownumber']], j = index[['count']])

您还可以使用
:=
运算符。您不需要在此处使用
。相反,您可以这样做:

table[, count := 0L][index$row_number, count := index$count]
首先,我们使用整数值
0
初始化
count
,然后对于
i
中给出的行号,我们使用
索引中相应的
count
值修改
表的
count


HTH

您也可以使用
:=
操作符。您不需要在此处使用
。相反,您可以这样做:

table[, count := 0L][index$row_number, count := index$count]
首先,我们使用整数值
0
初始化
count
,然后对于
i
中给出的行号,我们使用
索引中相应的
count
值修改
表的
count


HTH

您也可以使用
:=
操作符。您不需要在此处使用
。相反,您可以这样做:

table[, count := 0L][index$row_number, count := index$count]
首先,我们使用整数值
0
初始化
count
,然后对于
i
中给出的行号,我们使用
索引中相应的
count
值修改
表的
count


HTH

您也可以使用
:=
操作符。您不需要在此处使用
。相反,您可以这样做:

table[, count := 0L][index$row_number, count := index$count]
首先,我们使用整数值
0
初始化
count
,然后对于
i
中给出的行号,我们使用
索引中相应的
count
值修改
表的
count


HTH

非常感谢,这真是天才!另一方面,我想知道我是否可以自己找到或创建data.table 1.9.3的tar.gz版本。谢谢也许您可以从下载zip版本,解压缩它,然后使用
R CMD BUILD
?无论如何,Matt已经将
data.table 1.9.4
推给了CRAN,它应该很快就会出现。非常感谢,这真是天才!另一方面,我想知道我是否可以自己找到或创建data.table 1.9.3的tar.gz版本。谢谢也许您可以从下载zip版本,解压缩它,然后使用
R CMD BUILD
?无论如何,Matt已经将
data.table 1.9.4
推给了CRAN,它应该很快就会出现。非常感谢,这真是天才!另一方面,我想知道我是否可以自己找到或创建data.table 1.9.3的tar.gz版本。谢谢也许您可以从下载zip版本,解压缩它,然后使用
R CMD BUILD
?无论如何,Matt已经将
data.table 1.9.4
推给了CRAN,它应该很快就会出现。非常感谢,这真是天才!另一方面,我想知道我是否可以自己找到或创建data.table 1.9.3的tar.gz版本。谢谢也许您可以从下载zip版本,解压缩它,然后使用
R CMD BUILD
?在任何情况下,Matt已经将
data.table 1.9.4
推给了CRAN,它应该很快就会出现。