何が必要かは明確ではありませんが、aggregate
開始するためのコードを次に示します。
> df$values <- as.character(df$values)
> # A `list` of the values
> (da1 <- aggregate(values ~ date, df, I, simplify=FALSE))
date values
1 2000 a, b, d
> str(da1)
'data.frame': 1 obs. of 2 variables:
$ date : Factor w/ 1 level "2000": 1
$ values:List of 1
..$ 0:Class 'AsIs' chr [1:3] "a" "b" "d"
> # All the values collapsed into one string
> (da2 <- aggregate(values ~ date, df, paste, collapse = ", ", simplify=FALSE))
date values
1 2000 a, b, d
> str(da2)
'data.frame': 1 obs. of 2 variables:
$ date : Factor w/ 1 level "2000": 1
$ values:List of 1
..$ 0: chr "a, b, d"
str
ここで 2 つの例の違いを確認できるように、ucture を示しました。
以下のコメントを正しく理解していれば、これにも興味があるかもしれません。
> date = "2000"
> values = c("a", "b", "d")
> (temp <- data.frame(date, values = I(list(values))))
date values
1 2000 a, b, d
> str(temp)
'data.frame': 1 obs. of 2 variables:
$ date : Factor w/ 1 level "2000": 1
$ values:List of 1
..$ : chr "a" "b" "d"
..- attr(*, "class")= chr "AsIs"
つまり、 をlist
作成するときに を列項目として使用する場合は、 関数data.frame
を使用する必要がありI
ます。