以下列数据帧为例:
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
答案 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"
与上述相同,但我们没有必要卸载额外的结构,而不是使用因子变量分割数据框。