我正在从Mathematica转向R,我不需要在导入期间预测数据结构,特别是我不需要在导入之前预测数据的矩形性。导入和分析R中的非矩形.csv文件
我有许多文件格式.csv
文件内容如下:
tasty,chicken,cinnamon
not_tasty,butter,pepper,onion,cardamom,cayenne
tasty,olive_oil,pepper
okay,olive_oil,onion,potato,black_pepper
not_tasty,tomato,fenugreek,pepper,onion,potato
tasty,butter,cheese,wheat,ham
行有不同的长度,将只包含字符串。
在R中,我该如何处理这个问题?
你试过了什么?
我试着read.table
:
dataImport <- read.table("data.csv", header = FALSE)
class(dataImport)
##[1] "data.frame"
dim(dataImport)
##[1] 6 1
dataImport[1]
##[1] tasty,chicken,cinnamon
##6 Levels: ...
我解释这从文档,其配料为不同行的每个列表中的单数列。我可以提取前三行,如下所示,每一行的class
factor
但似乎包含更多的数据比我的期望:
dataImport[c(1,2,3),1]
## my rows
rowOne <- dataImport[c(1),1];
class(rowOne)
## "factor"
rowOne
## [1] tasty,chicken,cinnamon
## 6 Levels: not_tasty,butter,cheese [...]
这是因为据我追求这个问题,现在我会感谢关于此数据结构的适用性read.table
的建议。
我的目标是按每行的第一个元素对数据进行分组,并分析每种类型配方之间的差异。在情况下,它可以帮助影响数据结构的建议,在数学我会做到以下几点:
dataImport=Import["data.csv"];
tasty = Cases[dataImport, {"tasty", ingr__} :> {ingr}]
回答讨论
@ G.Grothendieck已经在使用reshape2
包使用read.table
和后续处理提供了解决方案 - 这看起来非常有用,我稍后会进行调查。这里的一般建议解决了我的问题,因此接受。
@使用tm
包MrFlick的建议是使用DataframeSource
在导入数据后,您想对数据做什么? R的“数据”结构和基本功能大部分对矩形数据效果最好。你只是想要一个字符向量列表?你想如何分析差异? – MrFlick
@MrFlick我有兴趣分析哪些成分是最常见的每个类别(美味,not_tasty),这需要统计等我已经微不足道的问题一点点,以减少问题。我在Mathematica中使用的实际数据作为半机器学习示例的一部分.. –
这实际上与mathematica没有任何关系吗?你能删除那个标签吗? – agentp