一种方法是使用该aggregate()
功能。来自?aggregate
:
将数据拆分为子集,计算每个子集的汇总统计信息,并以方便的形式返回结果
首先,读入您的数据(您应该在将来的问题中这样做以提供可重现的示例,请参阅:How to make a great R reproducible example?):
txt <- "user1, hashtag1, hashtag2
user1, hashtag3, hashtag4
user2, hashtag5, hashtag6
user2, hashtag7, hashtag8"
x <- read.delim(file = textConnection(txt), header = F, sep = ",",
strip.white = T, stringsAsFactors = F)
然后,使用aggregate()
将数据拆分为子集,并将每个子集转换为一维数组:
aggregate(x[-1], by = x[1], function(z)
{
dim(z) <- c(length(z)) # Change dimensions of z to 1-dimensional array
z
})
# V1 V2.1 V2.2 V3.1 V3.2
# 1 user1 hashtag1 hashtag3 hashtag2 hashtag4
# 2 user2 hashtag5 hashtag7 hashtag6 hashtag8
编辑
这种方法只有在所有用户都拥有相同数量的标签时才有效,这似乎不太可能。@Josh O'Brien 的回答是更好的方法。