合并数据框行的名称相同

时间:2016-07-08 12:16:13

标签: r

以下列数据帧为例:

data_ = data.frame(name = c("name1", "name2","name1"), product = c("product1", "product2", "product3"))

输出结果为:

name1 product1
name2 product2
name1 product3

我想用相同的名称合并行。因此,结果如下:

name1 product1, product3
name2 product2

我使用的是R 2.15.2,因此我无法使用aggregate

1 个答案:

答案 0 :(得分:3)

存储此数据的最自然的方法可能是列表,因为每个名称将有不同数量的元素。这是一种获取包含产品特征向量的命名列表的方法:

lapply(split(data_, data_$name), function(i) {i$name <- NULL; as.character(unlist(i))})
$name1
[1] "product1" "product3"

$name2
[1] "product2"

我将产品转换为使用as.character更容易使用的字符,但这不是必需的。

在原始示例中,对象data_是数据帧。但是,如果它是一个列表,则代码变得更简单:

# build list
data_ = list(name = c("name1", "name2","name1"), product = c("product1", "product2", "product3"))

# split list along names variable:
split(data_$product, data_$name)
$name1
[1] "product1" "product3"

$name2
[1] "product2"

与上述相同,但我们没有必要卸载额外的结构,而不是使用因子变量分割数据框。