1

我在 sparkR 中有一个名为pgz. 它包含user_idtime。对于固定的 user_idk我得到

y <- filter(pgz, pgz$user_id == k)

当我输入时head(y),我可以看到 user_id 的一些时间k。“2005-02-04”、“2005-06-06”.. 它们都已排序,因此它们增加了。为此,user_id我想测试他是否times大于我设置的固定时间

fixtime <- "2010-01-01"

我想保存所有时间大于修复时间的 user_id。如何才能做到这一点?

4

1 回答 1

1

首先,让我们创建一些示例数据进行测试

set.seed(1)
dd = data.frame(id = base::sample(1:3, 4,TRUE), 
                times = base::sample(c("2005-02-04" , "2005-06-06", "2007-02-04" , "2006-06-06"), 
                                     12, TRUE))
dd$times = as.Date(dd$times)
NROW(dd[dd$id==1 & dd$times > as.Date("2006-01-01"),])

对于这个数据集,我们应该得到答案 2。

创建 Spark 数据框

dd_sp = createDataFrame(sqlContext, dd) 

然后过滤

dd_sp_k = filter(dd_sp, dd_sp$id== 1 & 
             dd_sp$times > as.Date("2006-01-01"))

然后我们可以使用summarise来获取数据框的长度

## This seems a bit clunky, bit it works.
summarize(dd_sp_k, count = n(dd_sp_k$times)) %>%
  head

这给出了 2。

于 2015-08-27T11:00:00.507 回答