【发布时间】:2020-04-25 13:49:59
【问题描述】:
我有以下data.table 对象:
USER active rate day # of elements by hour
4q7C0o 1 1.48 1 c(-10, 0, 0, 0, -5, -5, 5, 98, 167, 211, 246)
2BrKY63 1 0.5 3 c(-11, 0, 0, 0, -1, -1, 0, 5, 15, 24, 89, 187)
3drUy6I 1 2.58 5 c(-20, 0, -9, 0, 0, 0, 0, 0, 1, 112, 265, 309)
G5ALtO 1 1.1 7 c(-183, -1, 0, 0, 0, 0, 0, 2, 20, 153, 170)
我想在# of elements by hour 列的每个列表中只保留 >= 0 的元素,以便获得如下内容:
USER active rate day # of elements by hour
4q7C0o 1 1.48 1 c( 0, 0, 0, 5, 98, 167, 211, 246)
2BrKY63 1 0.5 3 c( 0, 0, 0, 0, 5, 15, 24, 89, 187)
3drUy6I 1 2.58 5 c( 0, 0, 0, 0, 0, 0, 1, 112, 265, 309)
G5ALtO 1 1.1 7 c( 0, 0, 0, 0, 0, 2, 20, 153, 170)
我尝试了以下方法,但它花费的时间太长,当我使用少量数据时,它会产生一些奇怪的结果:
DT[, # of elements by hour[which(unlist(# of elements by hour) >= 0)], day ]
关于我做错了什么有什么建议吗?还是更快的更好方法?
【问题讨论】:
-
您可以使用
dput共享数据吗? -
@RonakShah,这需要很长时间,但是当我停止它时,它显然将每个数字作为 Long(例如 98L)而不是双精度。我不知道这是否会导致问题?
标签: r list data.table