質問

RapidMinerでCSVファイルをインポートするのに問題があります。フローティングポイント値は、整数値と小数値の間の分離ドットの代わりにコンマで記述されます。

この方法でフォーマットされた値を正しくインポートする方法を知っている人はいますか?

サンプルデータ:

BMI;1;0;1;1;1;blue;-0,138812155;0,520378909;5;0;50;107;0;9;0;other;good;2011 BMI;1;0;1;1;1;pink;-0,624654696;;8;0;73;120;1;3;0,882638889;other;good;2011

ラピッドマイナーは、実際にそれを「多項式」として解釈します。それを「実際」に強制することは、「0」値の正しい解釈のみにつながります。

ありがとう

役に立ちましたか?

解決

セミコロンを区切り文字として使用します。使用できます java.util.Scanner 各行を読むには。 String.split() セミコロンに分割する。コンマでトークンを取得すると、使用できます String.replace() コンマを小数点に変更します。その後、使用できます Float.parseFloat()

これがあなたの質問に答えることを願っています。

他のヒント

これは非常に古い要求のようです。これがあなたに役立つかどうかはわかりませんが、これは同様の状況を持つ他の人に役立つかもしれません。

ステップ1:「CSVの読み取り」演算子で、「Import Configuration Wizard」の下で、「Semicolon」をセパレーターとして選択してください

ステップ2:「推測タイプ」オペレーターを使用します。属性フィルタータイプ - >サブセット、属性 - >属性8、9、16(上記の例に基づいて)を選択し、「小数点文字」をa "に変更すると、すべて設定する必要があります。

これが役立つことを願っています(誰か!)

public static void main(String args){
    BufferedReader br = new BufferedReader(new FileReader("c:\\path\\semicolons and numbers and commas.csv"));
    try {
        for(String line; (line=br.readLine()) != null);) {
            //Variable line now has a single line from the file. This code will execute for each line.
            String array = line.split(";");// Split on the semicolon. Beware of changing this. This uses regex which means that some characters mean something like . means anything, not just dots.
            double firstDouble = Double.parseDouble(array[7].replace(',','.')); // Get field 7 (the eighth field) and turn it into a double (high precision floating point). Replace , with . so it will not make an error
            System.err.println("Have a number " + firstDouble);
            System.err.println("Can play with it " + (firstDouble * 2.0));
        }
    }finally{
        br.close(); // Free resources (and unlock file on Windows).
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top