대용량 데이터 세트가있는 csv 파일의 열 값을 수정하고 싶습니다. 그래서 나는 단일 열 값 (여기서는 2 위)에서 추출한 다음 두 번 반복하여 표준 편차를 찾았고 while 루프는 첫 번째 발견을 위해 그리고 두 번째는 표준 편차를 찾았습니다. 표준 편차는 추출 된 값과 곱해지고 그 값은 그 값으로 대체됩니다. 업데이트 된 csv 파일을 생성하십시오. 여기에 내가 루프를 반복하지 않고 빈 파일을 성공적으로 새 파일을 생성하는 코드를 실행할 때. while 루프 나 파일을 읽지 않는 문제가 있다고 생각합니다. 나는 그것이 무엇인지 모른다. 표준 편차 (σ = √ [(Σ (X - MEAN)) ÷ 2 N])는 PLS 넌 루프 동안 초 스킵되는 날열 값을 추출하여 새로운 csv 파일을 수정하고 생성하십시오.
package csvtest7;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.FileWriter;
import java.io.*;
public class Csvtest7 {
public static void main(String[] args)throws IOException {
String filename = "ly.csv";
File file = new File(filename);
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("ly_updated.csv"));
}
catch (IOException e) {
}
try {
Scanner inputStream = new Scanner(file);
inputStream.next();
double Tuple;
int count=0;
Tuple = 0;
double stddev=0;
double stddev1;
double stddev2;
//double Xi;
double MEAN;
double standarddeviation;
while (inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(";");
double balance = Double.parseDouble(values[2]);
balance = balance + 1;
Tuple += balance ;
}
MEAN=Tuple/count;
while (inputStream.hasNext()) {
String data = inputStream.next();
String[] values = data.split(";");
double balance = Double.parseDouble(values[2]);
stddev=balance-MEAN;
stddev1=(stddev*stddev);
stddev2=(stddev1/count);
standarddeviation=Math.sqrt(stddev2);
balance=standarddeviation*balance;
values[2] = String.valueOf(balance);
// iterate through the values and build a string out of them
StringBuilder sb = new StringBuilder();
// String newData = sb.toString();
for (int i = 0; i < values.length; i++) {
sb.append(values[i]);
if (i < values.length - 1) {
sb.append(";");
}
}
// get the new string
System.out.println(sb.toString());
writer.write(sb.toString()+"\n");
}
writer.close();
inputStream.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(Csvtest7.class.getName()).log(Level.SEVERE, null, ex);
}
}
메신저 프로그래밍 작업에서 새로운 아이디어를 얻지 못해 어디서 코드를 변경했는지 .. 제안 된 첫 번째 코드 스 니펫을 게시 할 수 있습니다. –
나는 내 대답을 편집했다. 좀 이해해 주시길 바랍니다. – SMA
여기에 내가 1 루프 찾기 의미와 두 번째 반복마다 그것을 사용하므로 2 루프가 필요하다고 생각해. –