R言語 - 試験報告書 - データクリーニング

まず、トレーニングコンテンツ

  1. これは、テストすることができ、エラーのトラブルシューティングの基本的な開発環境だけでなく、新しい言語のソフトウェアは、インストールします。
  2. mysqlの学生で新しいデータベースながら、MySQLのMySQLデータベースの基本的な接続テストのためのNavicatを使用することができます。あなたは、データベースを初期化し、外部SQLスクリプトファイルを使用してデータセットをインポートすることができます。
  3. mysqlデータベース対応した動作と同様に、プロジェクトからエクスポートされた実行可能なjarファイルのためのツール、新しいプロジェクトやプログラミングツールの使用方法に精通しているEclipseの。
  4. R-3.6.1-win.exeというファイル名を指定して実行、エクスポートされた実行可能なjarファイルを使用します。そして、Cにスクリプトファイル「.Rを清掃データ」の作成:\ディレクトリinputDirのは、濾過場などの操作を含め、業務を、クレンジングstudentdata.txtデータファイルのデータをエクスポートしました。一方、Cに:データファイルをクレンジング、既に生成されたデータは、outputDirの下の\ディレクトリをstudentdata.txt。

 

 

 

第二に、実験対象の目標

  1. 新しい開発言語に精通し、ビルド、テスト、およびエラーのトラブルシューティングのスキルへの基本的な開発環境を、マスター。
  2. 基本的な操作を実行するためのMySQLのMySQLデータベースソフトウェアのためのNavicatに泊まりました。重要なのは、初期データをインポートし、外部SQLスクリプトファイルを使用して、特定のデータベースに設定することができます。
  3. 日食のプログラミングツールの使用をマスターだけでなく、プログラミングのプロセスで一般的に使用されるショートカットに精通し、プログラミングの効率を向上させます。このデータ操作に通常のJavaクラスの手続きは、MySQLデータベースを作成して、Javaプロジェクトから対応する実行可能なjarファイルをエクスポートする方法を学びます。
  4. 基本的な構文のR言語を習得し、R-3.6.1ソフトウェアを使用する方法を提供します。Rは、前記特定の基本的なデータ・ディレクトリ・洗浄操作で、データセットのスクリプトを書くことができる:データをフィルタリングし、置換データ・ブロック・フィールド名とデータフレームと他の操作を再構成します。

 

 

第三に、実験的なプラットフォーム

  1. システム:Windows 10

          インテル(R)Core(TM)i7-7500U CPU @ 2.70GHz 2.90 GHzの

        RAM 8.00ギガバイト

  1. ツール:

    R-3.6.1-win.exeという、MySQLのNavicatは、tbl_stuinfo-data.sqlに、日食

 

 

第四に、実装手順

(A)のインストールと検査環境

  1. Javaの開発環境検査

1)JDK環境を確認してください

最初のJava -version javaの実験と正常に戻ったすべての情報をチェックするマシン。しかし、コンパイル時ディレクティブjavacのチェックは、図4-1の内容を返し、情報が表示はjavacの環境変数を設定されていないことを示しています。

 

図4-1のjavac利用できないコンパイラディレクティブ

 

 

2)設定JDKの環境変数。

JDKは、システム環境変数を再設定します。デスクトップコンピュータのアイコンを右クリックし、[プロパティ]を選択し、左側のコントロールパネルの「システムの詳細設定」をクリックしてください。アドバンス]タブで、その後、「環境変数」をクリックし、システム変数のパスを選択し、任意の元JDKのパス変数を削除します。

JAVA_HOME、変数値C:環境変数のコントロールパネルで、「新規」、変数名をクリック\プログラムファイル\のJava \ jdk1.8.0_91を、[OK]を押して保存します。

 

図環境変数のコントロールパネル4-2

 

 

図4-3 JAVA_HOME環境変数

 

        次いで、ヘッダ追加のパスを編集する:%JAVA_HOME%/ binに、コンテンツ。

 

 

 

 

追加コンテンツの後に図4-4のパス

 

JDKのバージョンを再検討し、VIEWコンパイラの実装機能が利用可能です。

 

図4-5 javacコンパイラが利用できます

 

 

  1. R言語のインストール

1)インストールのR-3.6.1-勝利

、既にダウンロードR-3.6.1-win.exeというファイルをダブルクリックしてR言語をインストールします。OKまたは[次へ]をクリックし、デフォルトのインストール設定をすることができ保ちます。4-6、R-3.6.1がインストールインタフェースの終わりで、オフをクリックします。

 

図4-6 R-3.6.1取付端

 

2)オープンRプロシージャ。

4-7、図の最初のR-3.6.1オープンインタフェース手順のため。

 

 

図初期開口4-7 R

 

   

 

 

(ii)は、データベースのデータを提供します

  1. データベースの確立

1)データベースに接続します

使用Navicat for MySQL连接MySQL数据库前,填完基本的连接信息后,点击测试连接到数据库,如图4-8所示,即为连接前的测试。

 

图4-8 连接测试

 

在点击两次确认之后,再上机“本地”即可连接到实验所需的MySQL数据库。

 

图4-9 连接到MySQL数据库

                        

2)         新建数据库

在“本地”上鼠标右键,选择“新建数据库”,在面板中填入如图4-10的内容,再按确定即可。

 

图4-10 新建数据库

 

 

  1. 初始化数据库

双击建立好的数据库“student”,并在该数据库名称上右键,选择“运行SQL文件”。找到外部资源的tbl_stuinfo-data.sql文件,点击开始。

 

图4-11 运行sql脚本

 

点击关闭,回到Navicat for MySQL主面板。在按F5键刷新界面,会发现student数据库下多出名称为tbl_stuinfo的数据表,双击打开,检查student库的数据是否乱码。如果是乱码,重新建立数据库。

 

图4-12 数据库初始化成功

 

至此,便可关闭Navicat for MySQL软件,但必须保持该数据库在后台正常运行。

 

 

(三)   编写数据获取工具

  1. 新建java项目。打开eclipse工具,在Package Explorer面板右键new->Java Project ,新建项目名为:sdms-v2 即可。
  2. 导入jar依赖。在sdms-v2工程名称上右键,选择Build Path -> Add External Archive...  ,找到外部的mysql-connector-java-5.1.7-bin.jar文件,再确认并返回主界面。
  3. 编写程序类

分别在该项目中新建:MainClass、StudentBean、StudentDao、TestConnection和TxtUtil类。

 

1)         MainClass类

其中MainClass为主类,功能是创建一个dao对象并调用写文件的方法,关键代码如下:

StudentDao dao = new StudentDao();

List<StudentBean> list = dao.findAll();

new TxtUtil().writeToFile(list);

 

2)         StudentBean类。StudentBean定义学生对象拥有的属性,同时,重写了构造方法。关键代码如下

public StudentBean(Integer stuid, String name, boolean sex, String mobile, Timestamp birthday, String place,

           String major, String note) {

       super();

       this.stuid = stuid;

       this.name = name;

       this.sex = sex;

       this.mobile = mobile;

       this.birthday = birthday;

       this.place = place;

       this.major = major;

       this.note = note;

    }

 

3)         StudentDao类。该类定义了一个连接对象、执行sq1命令的对象和结果集对象。在预处理sql语句的同时,执行了sql语句,并把结果交给res进行返回。核心代码如下:

pst = conn.prepareStatement(sql);     

           res = pst.executeQuery();             

           while(res.next()){                    

              Integer stuid = res.getInt("stuid");

              String name   = res.getString("name");

              boolean sex   = res.getBoolean("sex");

              String mobile = res.getString("mobile");

              Timestamp birthday = res.getTimestamp("birthday");

               String place  = res.getString("place");

              String major  = res.getString("major");

              String note   = res.getString("note");

              StudentBean studentBean = new StudentBean(stuid,name,sex,mobile,birthday,place,major,note);

              list.add(studentBean);     

            }

 

4)         TestConnection类为MySQL数据库连接类。其先加载了驱动程序类,再获取一个连接对象,并返回,最后测试是否连接成功。关键代码如下:

static{

       try{

           Class.forName("com.mysql.jdbc.Driver");                                         

       }catch(Exception ex){

           ex.printStackTrace();

       }

    }

    public static Connection getConnection() throws Exception{

       Connection conn=DriverManager.getConnection("jdbc:mysql://172.25.6.200:3306/student?useUnicode=true&characterEncoding=UTF8","root","");

       return conn;                                                                           

    }

    public static void main(String[] args) throws Exception{

       Connection c=getConnection();

       System.out.println("c="+c);

       c.close();                                                                             

    }

 

5)         TxtUtil类为工具类,作用是把mysql的数据写入到文本文件中,核心的代码如下:

FileWriter fw=null;

       BufferedWriter bw=null;

       try {

           fw=new FileWriter(  new File(OUTFILE)   );

           bw=new BufferedWriter(fw);

           bw.write(HEADER);

           bw.newLine();

           for(StudentBean stu:list){

              bw.write(stu.getStuid()+FLAG);

              bw.write(stu.getName()+FLAG);

              bw.write(stu.isSex()?"男" +FLAG:"女"+FLAG);

              bw.write(stu.getMobile()+FLAG);

               bw.write(stu.getBirthday().toString().substring(0, 10)+FLAG);

              bw.write(stu.getPlace()+FLAG);

              bw.write(stu.getMajor()+FLAG);

              bw.write(stu.getNote());

              bw.newLine();

           }

           bw.flush();

       } catch (Exception e) {

           e.printStackTrace();

       }finally{

           try {

              if(fw != null){fw.close();}

           } catch (Exception e) {

              e.printStackTrace();

           }}}

 

上述的项目代码在eclipse中调试无误之后,便可将生成文件的位置设置为C:\ inputdir目录下,生成的数据文件为studentdata.txt  。

 

  1. 导出jar文件。当上述的代码调试成功之后,以及生成文件的位置和名称设置好之后。在该项目sdms-v2的名称上右键,依次选择Export..->Java结构下的Runnable JAR file 。

 

图4-13 选择Runnable JAR file

 

之后,点击Next>  ,将Export destination:位置指定到C:\目录下,保存的文件名为:stu.jar  ,再单击Finish即可。至此编写数据获取工具步骤,结束。

 

 

 

(四)   R语言数据清洗处理

  1. 执行stu.jar工具。

在R x64 3.6.1中使用setwd(“C:\”)命令,将R的工作空间指定到C:\目录下。再使用命令shell.exec("jar stu.jar") ,将mysql数据库student中的数据,在C:\ inputdir目录下,生成的studentdata.txt数据文件。如图4-14,为该文件的样式。

 

图4-14  studentdata.txt

 

 

  1. 编写R脚本文件。

1)         新建程序脚本

打开R x64 3.6.1软件,点击菜单栏的文件->新建程序脚本 。在打开的脚本编辑器中输入相应的脚本内容。之后保存到C:\目录下,为数据清洗.r文件。

 

2)         脚本内容如下:

inputdir<-"./inputdir"

outputdir<-"./outputdir"

for(filename in dir(inputdir)){

        print(filename)

        inputpath<-sprintf("%s/%s",inputdir,filename)      data<-read.table(inputpath,header=TRUE,sep=",") 

print("读取的文件数据如下:")

        cat("-------------------end---------------------\n")

        cnames<-colnames(data)

        cnames[cnames=="stuid"]<-"编号"

        cnames[cnames=="name"]<-"姓名"

        cnames[cnames=="sex"]<-"性别"

        cnames[cnames=="mobile"]<-"手机号"

        cnames[cnames=="birthday"]<-"出生年月日"

        cnames[cnames=="place"]<-"籍贯"

        cnames[cnames=="major"]<-"专业"

        cnames[cnames=="note"]<-"备注"

        colnames(data)<-cnames

        data<-data[c("姓名","性别","出生年月日","籍贯")]

        #print(data,right = FALSE)

        data<-data[data$籍贯=="广西桂林",]

        print(data,right = FALSE)

        outputpath<-sprintf("%s/%s",outputdir,filename)        write.table(data,outputpath,row.names=FALSE,sep=",")

}

 

 

  1. 脚本文件功能介绍。如图4-15,详细注释:

 

图4-15 详细注释-数据处理

 

  1. 执行脚本并生成数据处理的文件。由于R x64 3.6.1已经将C:\作为当前的工作目录,所以直接在R中运行命令:source("数据清洗.r") 。就可以在C:\outputdir目录下生成已经进行数据清洗的studentdata.txt数据集文件。如图4-16所示:

 

如图4-16  数据清洗后的studentdata.txt文件

 

 

 

 

五、 实验成果

当运行在R语言中,运行命令shell.exec("jar stu.jar") ,会将mysql数据库student中的数据,在C:\ inputdir目录下,生成的studentdata.txt数据文件。如图5-1所示:

 

图5-1 数据清洗前的数据集

 

当在R中,运行命令:source("数据清洗.r") 。即,运行编写的数据清洗.r脚本文件,会在C:\outputdir目录下自动生成已经进行数据清洗的studentdata.txt文件。

 

图5-2 数据清洗后的数据集

 

        两相对比之下,可以得出总结:本实验先是利用编写的stu.jar可执行文件,从mysql数据库student中导出数据集studentdata.txt 。再通过在R语言中编写脚本并运行脚本的方式,将数据集studentdata.txt进行数据清洗操作,并生成了新的studentdata.tx数据文件,本实验顺利完成。

 

 

 

 

六、 实训总结

关于本次实验的经验收获和实验总结,可分总结如下:

  1. 在对实验机器的java -version 和java进行检查时,返回的信息皆正常。但是,唯独javac编译指令对于实验机器而言,无法识别。说明javac编译环境异常,本实验统一对JDK进行环境配置。
  2. 在使用Navicat for MySQL连接MySQL数据库,并新建数据库,以及使用SQL脚本文件进行数据库的数据导入和库的初始化操作过程中,应该格外地注意编码的问题,否则在进行jar文件工程编程时,会发生乱码的现象。
  3. 同时,如果导出的studentdata.txt文件中,部分的数据格式属性的编码与R脚本中设置的不一致,也会发生乱码的现象。并且将会加大错误排查的难度和精力。
  4. 在R x64 3.6.1软件中,切换R语言的工作目录时,需要将C:盘作为工作空间,对于部分权限级别较高的机器而言,将会是无法切换的。这时候,需要以管理员的方式运行R x64 3.6.1软件。
  5. 整体而言,本实验的思路是:先利用编写的stu.jar可执行文件,从mysql数据库student中导出数据集studentdata.txt 。再通过在R语言中编写脚本并运行脚本的方式,将数据集studentdata.txt进行数据清洗操作,并生成了新的studentdata.tx数据文件。
  6. 通过本实验,基本上能对开发环境进行初步的检验和错误排查,同时,能使用Navicat for MySQL对MySQL数据库进行基本的连接测试。以及,在mysql中新建数据库并利用外部SQL脚本文件对数据库进行数据集的导入和初始化。
  7. 在利用eclipse编程工具进行开发的过程中,积累了一定的快捷方式,这将极大地提高我今后的开发效率。

おすすめ

転載: www.cnblogs.com/Raodi/p/12155285.html