如何使groupBy找到R中的第一个动作

How to make groupBy to find the first action in R

在 R 中我有一个 data.frame data 其中 head(data) 给出

user  action      information 
12    2012-01-01  12323
11    2014-03-02  24445
12    2012-02-05  32234
....

我想创建一个新的数据集,只包含 user 和他们的出生,即他们的 first 动作。对于 user 12,例如 2012-01-01

在 sparkR 中我知道如何做到这一点,但我想知道如何在 R 中做到这一点。 在 sparkR 中,我只是这样做了

new=groupBy(data, data$user)
new_data=agg(new, birth=first(data$action))
# Making it local (from a DataFrame to a data.frame)
local_new_data=collect(new_data)

现在可以将此列表保存为 csv 文件write.csv("...")

谢谢。

更新

我在 sparkR 中有一个数据集,我在其中 运行ned sparkR 代码以获取用户及其出生列表。我的问题是我买了一台新电脑,但还没有在上面安装 sparkR(我仍在为此努力)。我只需要一个 运行 我在 sparkR 中的代码,这样我就可以获得列表。我已准备好执行 datasetcode。我真的希望有人能帮助我吗?

我的回答

我尝试以不同的方式解决它,由于某种原因,它 运行 非常快。我只是这样做了,因为列操作已排序

s=data[!duplicated(data),]

现在 s 包含出生即行动的用户。为了只得到它们,我只是这样做

ss=cbind(as.character(s$user), as.character(s$action))

在这个 运行 中由于某种原因在 R 中非常快。

我的问题 重复 - 它与某些人声称的其他 2 个问题有很大不同。

R 中,使用 dplyr,它的语法几乎相似,因为它还有 first 函数以及 group_by(代替 groupby)

library(dplyr)
data %>%
     group_by(user) %>%
     summarise(birth = first(action))

或者另一个选项是 data.table

library(data.table)
setDT(data)[, .(birth = action[1L]) , by = user]