处理列中的多个值

处理列中的多个值

以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

在此之后,我想将此写入文件以共享此结构。但是,由于列表类型的原因,它禁止使用write.csv编写此类内容。我找到的解决方案是将这些列转换为字符串。但是,如何从文件中读取此内容?有没有一种统一的格式可以(几乎)用任何一种语言阅读而不费多大力气?

最佳答案

您可以创建一个选项卡分隔的文件,如下所示:

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]}]

关于python - 处理列中的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35036133/

10-09 21:56