如何使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 中的代码,这样我就可以获得列表。我已准备好执行 dataset 和 code。我真的希望有人能帮助我吗?
我的回答
我尝试以不同的方式解决它,由于某种原因,它 运行 非常快。我只是这样做了,因为列操作已排序
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]
在 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 中的代码,这样我就可以获得列表。我已准备好执行 dataset 和 code。我真的希望有人能帮助我吗?
我的回答
我尝试以不同的方式解决它,由于某种原因,它 运行 非常快。我只是这样做了,因为列操作已排序
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]