我是R的新手,所以如果这是一个非常简单的问题我会道歉。我的数据结构如下:
> head(example)
id var1
1 1 a
2 1 b
3 1 c
4 2 x
5 2 y
6 3 f
>
我想将其折叠下来,因此每个id只有一个观察点,如下所示:
id var1
1 a, b, c
2 x, y
3 f
所以经过大量的搜索,实验和阅读类似的例子,我发现我可以使用以下方法实现这一目标:
new <-tapply(example$var1, example$id, unlist)
我查看数据,它看起来几乎像我期望的那样: it turned id into row.names and var1 into x
但是,我认为这很好,所以我会把它导出。但是,无论是csv,文本等,我总是得到同样的错误:
Error in .External2(C_writetable, x, file, nrow(x), p, rnames, sep, eol, :
unimplemented type 'list' in 'EncodeElement'
我已尝试过toString(new$x)
,unlist(new$x)
,as.character(new$x)
,paste(new$x)
以及其他几个代码段,但似乎没有解决错误。
看起来,由于数据可以正确地显示在查看器中,因此还应该有一种方法可以强制它以该格式导出到csv。或者我是否需要返回并更改我重塑数据的方式?
答案 0 :(得分:0)
试试这个:
library(dplyr)
df %>%
group_by(id) %>%
summarise(text=paste(val1, collapse=','))