【问题标题】:Data can't be exported to CSV after tapply and unlisttapply 和 unlist 后数据无法导出到 CSV
【发布时间】:2018-04-17 20:31:11
【问题描述】:

我对 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、text等我总是得到同样的错误:

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) 和其他几个代码 sn-ps,但似乎没有任何东西可以修复错误。

看起来,由于数据可以正确显示在查看器中,因此还应该有一种方法可以强制它以该格式导出为 csv。还是我需要返回并改变我重塑数据的方式?

【问题讨论】:

  • 将你的 tapply 语句更改为:tapply(example$var1, example$id, toString) 现在结果是一个数组而不是列表
  • 效果很好 - 非常感谢!我知道这一定很简单。

标签: r csv tapply


【解决方案1】:

试试这个:

library(dplyr)
df %>%
  group_by(id) %>%
  summarise(text=paste(val1, collapse=','))

【讨论】:

  • 我应该提到,我还没有弄清楚如何绕过我工作的安全设置,所以我无法安装像 tidyverse 等软件包。但如果/当我想出一个解决方法时。谢谢!
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
相关资源
最近更新 更多