R dataframe选择每组不同的值列表

时间:2015-02-16 17:15:51

标签: r group-by dataframe aggregate

我有一个由2列组成的数据框:

> head(session_item_pairs)
    session_id      item_id
53         811 111502665618
78         841 111502665618
127        901 111502665618
151        931 111502665618
477       1351 111502665618
501       1351 115641561585

我需要通过session_id对数据帧进行分组,并且对于每个session_id,按照该session_id的升序返回唯一项目列表。例如对于session_id 1351,结果将是

1351 (111502665618,115641561585)

任何想法?

2 个答案:

答案 0 :(得分:1)

尝试split然后unique个功能。

grouped <- split(df$item_id, df$session_id)
unique_items <- lapply(grouped, unique)

或一行

lapply(split(df$item_id, df$session_id), unique)

sort结果:

lapply(split(df$item_id, df$session_id), function(x) sort(unique(x)) )

答案 1 :(得分:-2)

使用子集

session_item_pairs[session_item_pairs$session_id==1321,]$item_id

您可以使用循环为所有session_ids执行此操作