小编Gab*_*iel的帖子

如何在 R 中将矩阵转换为 data.table

我有这个数据,它基本上是一个矩阵,但采用 data.table 格式:

我们称之为 matA:

Date    compA compB compC 
200101      1     2     3 
200102      2     4     1    
Run Code Online (Sandbox Code Playgroud)

如何将矩阵变成data.table中的数据库类型?

我们将此数据集称为 dtB:

Date    Company    Data
200101    compA       1
200101    compB       2
200101    compC       3
200102    compA       2
200102    compB       4
200102    compC       1
Run Code Online (Sandbox Code Playgroud)

我想到了一个非常愚蠢的方法来列出公司列表:

comp= as.data.table(c("compA", "compB", "compC"))
date= as.data.table(rep(matA[1,1],3))
data= as.data.table(matA[1,])

dtb= date[,Company := comp]
dtb= dtb[, Data := data]
Run Code Online (Sandbox Code Playgroud)

显然我最多只能获取日期 200101 中的数据。为了获取 200102,我编写了一个 for 循环。然后,根据colnames将200101和200102合并到dtB中。

有没有一种聪明的方法可以在 data.table 中做到这一点?非常感谢

r data.table

5
推荐指数
1
解决办法
7111
查看次数

根据另一个data.table删除data.table中的行

我有一个data.table名字dtA:

我的实际dtA有62871932行和3列:

  date    company    value
198101          A        1
198101          A        2
198101          B        5
198102          A        2
198102          B        5
198102          B        6
Run Code Online (Sandbox Code Playgroud)

data.table dtB有一些我想要删除的列dtA,所以dtB就像规则:

实际dtB有19615280行和3列:

  date    company    value
198101          A        2
198102          B        5
Run Code Online (Sandbox Code Playgroud)

最终结果是:

  date    company    value
198101          A        1
198101          B        5
198102          A        2
198102          B        6
Run Code Online (Sandbox Code Playgroud)

它不是那么简单:

dtA=dtA[!(dtB$company %in% dtA$company)] 
Run Code Online (Sandbox Code Playgroud)

因为它还取决于日期和价值.

我尝试将两个表合并在一起,并将其链接到不在语句中:

dtA=dtA[dtB, on=date][!(company %in% comapny) & !(value %in% value)]
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

加入超过2 …

r data.table

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

将数据框 R 的列表与 NULL 绑定

我有一个像这样的数据框结构列表:

让我们称这个列表为 listA:

$ :'data.frame':      1 obs. of 3 variables:
 ..$ a             :chr a1
 ..$ b             :chr b1
 ..$ c             :chr c1

$ : NULL

$ :'data.frame':      1 obs. of 3 variables:
 ..$ a             :chr a3
 ..$ b             :chr b3
 ..$ c             :chr c3
Run Code Online (Sandbox Code Playgroud)

如何保留数据的顺序,使用 NA 保持记录为 NULL 并形成这样的数据框?

     a    b    c
1:  a1    b1   c1
2:  NA    NA   NA
3:  a3    b3   c3
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用:

listA <- data.frame(do.call(rbind, listA))
Run Code Online (Sandbox Code Playgroud)

但最终结果将跳过第二行,变成这样:

     a    b    c
1:  a1    b1   c1
2:  a3    b3 …
Run Code Online (Sandbox Code Playgroud)

r dataframe

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

标签 统计

r ×3

data.table ×2

dataframe ×1