假设我有一个非常大的数据帧,包含2列和0.5 mil行。 例如,几行可能如下所示:
# Start End
# 89 100
# 93 120
# 95 125
# 101 NA
# 115 NA
# 123 NA
# 124 NA
我想操纵这个数据框来输出一个看起来的数据帧 像这样:
# End Start
# 100 89, 93, 95
# 120 101, 115
# 125 123, 124
如果有的话,最快的方法是什么呢? .5万行? bgoldst建议这段很棒的代码:
# m is a large two column data frame
end <- na.omit(m[,'V2']);
out <- data.frame(End=end,
Start=unname(sapply(split(m[,'V1'],findInterval(m[,'V1'],end [as.character(0:c(length(end)-1))],paste,collapse='.')))
然而这需要花费太长时间。
感谢您的帮助!
可能重复的帖子上的答案没有解决时间问题。 bgoldst的答案产生了预期的结果,但在我的电脑上却很慢。我想知道是否还有一些我能做的事情可以让它更快地运行。
答案 0 :(得分:1)
使用data.table的解决方案可能更快:
Array
(
[company_id] =>
[date] => Array
(
[0] => 2015/07/04
[1] => 2015/07/04
)
)