和方案一的区别就是:这个是自动的。对大量的Excel处理很方便。而且有fread这个神器,读取csv比较方便
参考网上的内容《R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理》:
写了一段VBA,可以选中需要的xlsx,然后在其目录下新建csv文件夹,把xlsx批量转化为csv格式。
代码如下:
Sub getCSV()
'这是网上看到的xlsx批量转化,而改写的一个xlsx批量转化csv格式
'1)批量转化csv参考:http://club.excelhome.net/thread-1036776-2-1.html
'2)创建文件夹参考:http://jingyan.baidu.com/article/f54ae2fcdc79bc1e92b8491f.html
'这里设置屏幕不动,警告忽略
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim data As Workbook
'这里用GetOpenFilename弹出一个多选窗口,选中我们要转化成csv的xlsx文件,
file = Application.GetOpenFilename(MultiSelect:=True)
'用LBound和UBound
For i = LBound(file) To UBound(file)
Workbooks.Open Filename:=file(i)
Set data = ActiveWorkbook
Path = data.Path
'这里设置要保存在目录下面的csv文件夹里,之后可以自己调
'参考了里面的第一种方法
On Error Resume Next
VBA.MkDir (Path & "\csv")
With data
.SaveAs Path & "\csv\" & Replace(data.Name, ".xlsx", ".csv"), xlCSV
.Close True
End With
Next i
'弹出对话框表示转化已完成,这时去相应地方的csv里查看即可
MsgBox "已转换了" & (i-1) & "个文档"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
操作步骤:把代码复制进excel的vba编辑器里,然后运行getcsv这个宏,会跳出一个窗口,要求选择你要转化的xlsx文件。(可多选)
选中以后,等一段时间,再回到xlsx文件下,会多一个csv文件夹,里面就是我们要导入R的文本文件了。
1、操作简单,直接依托于excel的VBA操作,不用配置java环境,之后沟通成本/换电脑成本小
2、特别适用于有一定数据量,但是数据格式整齐的文件,譬如从某数据端读入的数据。用fread还可以控制读取的行(skip=NNN),代码写入整洁方便。就算有一些异行数据,也可以事先用VBA进行操作,简单方便。
方案五:采用Python将Excel变为csv
使用python将Excel变为csv,然后采用R读取。
R中直接调用Java的对象和方法
rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法。rJava还提供了Java调用R的功能,是通过JRI(Java/R Interface)实现的
在R语言中,如果和java 进行交互,需要调用rJava,
在Linux中
然而在Linux的设置上是有一些需要注意的地方.那就是java的安装目录.checking Java support in R... present:
在interpreter : '/usr/lib/jvm/default-java/jre/bin/java'
在实际安装中,把java安装在了/opt/Java/jdk1.7.0_79,所以要这是R的java环境
设置R的java最新环境 R CMD javareconf JAVA_HOME=""
或者Sys.unsetenv()
在尝试修改以下中的jAVA_HOME
sudo gedit /usr/lib/R/etc/javaconf
sudo gedit /usr/lib/R/etc/ldpaths
source /usr/lib/R/etc/javaconf
source /usr/lib/R/etc/ldpaths
然后
设置R的程序从系统变量中会读取Java配置,R的java最新环境 R CMD javareconf
sudo R CMD javareconf -e
当然,JAVA_HOME已经设置好的前提下:export JAVA_HOME=/opt/Java/jdk1.7.0_79
在Windows中