流れとしては
1. DBに接続しデータを持ってくる(344医療圏×4項目)
2. R配列作成
3. Rで距離行列作成
4. クラスタを計算
5. 樹形図で表示
結果は表示できましたが、件数が多くなんだかわからない状態に。表示を工夫する必要があります。ひとまず出来たようでよかったです。
[Medical2_Cluster01.java]
import org.rosuda.JRI.REXP;
import org.rosuda.JRI.Rengine;
import java.sql.*;
import java.util.Arrays;
public class Medical2_Cluster01 {
public static void main(String[] args)
{
MySQL mysql = new MySQL();
Rengine re = new Rengine( new String[]{"--no-save"}, false, null );
ResultSet rs = mysql.selectZones();
double values [][] = new double[344][4];
int index = 0;
try {
while(rs.next()){
values[index][0] = rs.getDouble("zone_nontrans")/rs.getDouble("zone_eventnum")*100;
values[index][1] = rs.getDouble("zone_dpc")/rs.getDouble("zone_eventnum")*100;
values[index][2] = rs.getDouble("zone_event4")/rs.getDouble("zone_totalnum")*100;
values[index][3] = rs.getDouble("zone_eventnum")/rs.getDouble("zone_population")*100;
System.out.println("Rate for Non-Transition("+rs.getString("id")+")"+values[index][0]);
System.out.println("Rate for DPC-Transition("+rs.getString("id")+")"+values[index][1]);
System.out.println("Rate for Contact more than 4 times("+rs.getString("id")+")"+values[index][2]);
System.out.println("Rate for Occurance of events("+rs.getString("id")+")"+values[index][3]);
System.out.println("");
index++;
}
} catch (SQLException e) {
e.printStackTrace();
}
StringBuffer buf1 = new StringBuffer();
buf1.append("c_values<-c(");
for(int i = 0; i < values.length; i++){
if(i == values.length-1)
buf1.append(values[i][0]+","+values[i][1]+","+values[i][2]+","+values[i][3]+")");
else
buf1.append(values[i][0]+","+values[i][1]+","+values[i][2]+","+values[i][3]+",");
}
String c_values = buf1.toString();
re.eval(c_values);
re.eval("colnames(c_values)<-c('non-trans','doc','4times,'event)");
re.eval("c_values.d<-dist(c_values)");
re.eval("c_values.h<-hclust(c_values.d)");
REXP x1 = re.eval("round(c_values.d)");
System.out.println(x1);
re.eval("png('Medical2_Cluster01.png', 640, 480)");
re.eval("plot(c_values.h)");
re.eval("dev.off()");
re.end();
}
}
参考
http://midoriit.com/2014/05/r%E3%81%AB%E3%82%88%E3%82%8B%E7%B5%B1%E8%A8%88%E8%A7%A3%E6%9E%901.html
https://www1.doshisha.ac.jp/~mjin/R/28/28.html
0 件のコメント:
コメントを投稿