【发布时间】:2020-02-20 12:25:11
【问题描述】:
我的 data.table 太大而无法在 RAM 中融化/投射(数百万行)。
从中我需要提取每行没有重复值的行。可以保留重复的零和 NA。
在这个 MWE 中,“重复”列是我要计算的。
DT <- data.table(C1=c(0L, 7L, 0L, 0L),
C2=c(0L, 0L, 0L, 4L),
C3=c(2L, 0L, 2L, 3L),
C4=c(0L, NA_integer_, 2L, 6L),
C5=c(1L, 3L, 1L, 1L),
c6=c(0L, 4L, 2L, 4L),
Duplicates=c(FALSE, FALSE, TRUE, TRUE))
DT.wanted <- DT[Duplicates==FALSE, ]
列数不同。
编辑:这是一个 for 循环示例。太慢了。
DT <- data.table(C1=c(0L, 7L, 0L, 0L),
C2=c(0L, 0L, 0L, 4L),
C3=c(2L, 0L, 2L, 3L),
C4=c(0L, NA_integer_, 2L, 6L),
C5=c(1L, 3L, 1L, 1L),
c6=c(0L, 4L, 2L, 4L))
DT[, Duplicates:=FALSE]
for (i in 1L:nrow(DT)){
dt.i <- data.table(table(as.integer(DT[i, ])))
if (max(dt.i[V1>0, N])>1) DT[i, Duplicates:=TRUE]
}
【问题讨论】:
-
我必须使用
data.table还是可以使用其他 pkgs/base R? -
据我所知,只有 data.table 可以做到这一点而无需重写表。没有足够的内存。
标签: r data.table