SparkR中的'last'函数

时间:2015-08-06 08:21:44

标签: r sparkr

我有一个DataFrame X.在sparkR中,我可以通过输入

找到第一行
first(X)

现在我想找到最后一个。 '最后'是 聚合函数。

但是当我在sparkR中键入last(X)时,我收到此消息 (函数(classes,fdef,mtable)中的错误:   无法为签名'“DataFrame”找到函数'last'的继承方法 怎么可能,我怎么解决这个问题?

另外我可以用head(X)来获取第一行但是如何获取X中的最后一行?

1 个答案:

答案 0 :(得分:3)

如果您的DataFrame是可排序的,或者您添加了row.numbers,请先按降序排序,然后先进行排序:

dfDesc <- arrange(df, desc(abs(df$rowNumber)))
first(dfDesc)

如果您不想排序,可以添加一个常量行并使用groupBy的last-function:

df <- data.frame(a=c(1,2),b=c(2,3))
DF <- createDataFrame(sqlContext,df)

DF <- withColumn(DF, "constant", DF$a * 0)

lastLine    <- agg(groupBy(DF, DF$constant), a = last(DF[["a"]]), b = last(DF[["b"]]))
collect(lastLine)