处理

时间:2016-01-27 11:30:05

标签: python r database

考虑一下R:

中data.table包的一个例子
DT = data.table(ID = c("b","b","b","a","a","c"), a = 1:6, b = 7:12, c=13:18)
DT = DT[, .(A=list(a), B=list(b), C=list(c)), by=ID]
DT
   ID     A     B        C
1:  b 1,2,3 7,8,9 13,14,15
2:  a   4,5 10,11    16,17
3:  c     6    12       18

在此之后我想将此文件写入文件以共享此结构。但是,由于 list 类型,它禁止使用write.csv编写此类内容。我找到的解决方案是将这些列转换为 string 。但是,我如何从文件中读取此内容?是否有一些统一的格式可以(几乎)用任何语言读取而不需要太多努力?

1 个答案:

答案 0 :(得分:2)

您可以按如下方式创建制表符分隔文件:

DT2 <- DT[, .(A=toString(a), B=toString(b), C=toString(c)), by=ID]
write.table(DT2, "dt2.txt", sep="\t", row.names = FALSE)

大多数语言都应该是可读的。

当您想要保留列表时,按照@ TigerhawkT3的建议转换为JSON将是最佳选择:

DT3 <- DT[, .(A=list(a), B=list(b), C=list(c)), by=ID]
library(jsonlite)
toJSON(DT3)

给出:

[{"ID":"b","A":[1,2,3],"B":[7,8,9],"C":[13,14,15]},{"ID":"a","A":[4,5],"B":[10,11],"C":[16,17]},{"ID":"c","A":[6],"B":[12],"C":[18]}]