我使用R进行数据分析,对此非常满意。但是,清洁数据可能会更容易一些。我正在考虑学习适合这项任务的另一种语言。具体来说,我正在寻找一种工具,用于获取原始数据,删除不必要的变量或观察,并格式化它以便在R中轻松加载。内容主要是数字和字符串数据,而不是多行文本。
我正在考虑awk / sed组合与Python。 (我认识到Perl将是另一种选择,但是,如果我要学习另一种完整语言,Python似乎是一种更好,更可扩展的选择。)
sed / awk的优点是学习起来会更快。缺点是这种组合不像Python那样可扩展。事实上,如果我学习Python,我可能会想象一些“任务蔓延”,这很好,但不是我的目标。
我的另一个考虑因素是大数据集的应用程序。据我所知,awk / sed逐行操作,而Python通常会将所有数据都拉入内存。这可能是sed / awk的另一个优势。
我还缺少其他问题吗?您可以提供的任何建议将不胜感激。 (我为R用户提供了R标签,以提供清洁建议。)
答案 0 :(得分:15)
不要破坏你的冒险,但我会说不,这就是原因:
最重要的是:你已经知道R 。
那说,当然sed / awk非常适合小程序甚至是单行程,Python也是一门优秀的语言。但我会考虑坚持使用R.
答案 1 :(得分:10)
我经常使用Python和Perl。我知道sed相当好,曾经使用过很多awk。我已经使用了R in fit和spurts。 Perl是数据转换功能和速度方面的佼佼者。
老实说我真的不知道为什么会学习sed和awk over Perl。
为了记录,我不是"一个Perl家伙"。我喜欢它作为瑞士军刀,而不是宗教。
答案 2 :(得分:6)
我建议使用sed / awk以及UNIX类似平台上提供的其他命令行工具的财富:comm,tr,sort,cut,join,grep和内置shell功能,如循环和诸如此类的东西。你真的不需要学习另一种编程语言,因为R可以处理数据操作,如果不是比其他流行的脚本语言更好。
答案 3 :(得分:3)
我建议长期使用适当的语言处理数据文件,如python或perl或ruby,以及短期sed / awk解决方案。我认为所有数据分析师至少需要三种语言;我使用C进行大量计算,使用perl处理数据文件,使用R进行交互式分析和图形处理。
我在python变得流行之前学会了perl。我听说过关于红宝石的好东西,所以你可能想尝试一下。
对于其中任何一个,您可以逐行处理文件; python不需要提前读取完整的文件。
答案 4 :(得分:1)
我建议'awk'进行此类处理。
据推测,您只是在简单的文本文件中搜索/拒绝无效的观察结果。
awk在这项任务中闪电般快速,编程非常简单。
如果您需要做更复杂的事情,那么就可以。
如果您不介意性能损失,Python也是可能的。 “rpy”库可用于紧密集成python和R组件。
答案 5 :(得分:1)
我同意Dirk的观点。我想到了同样的事情,并且也使用了其他语言。但最后我再次感到惊讶的是,更有经验的用户使用R.对ddply
或plyr
这样的包可能会非常有趣。据说SQL经常帮助我处理数据杂志