안녕하세요!
나는 내 데이터 세트에서 14 개의 유정을 다양한 석회 광물 로그 데이터로 작업하고있다. 로깅 데이터에는 서로 다른 간격으로 식별 된 값이 누락되어 있으며 이러한 값을 다양한 방법으로 전가하여 어떤 기술이 가장 적합한 지 확인하려고합니다. 나는 누락 값 탐색 패널을 사용하여 데이터가있는 변수에서 데이터가 누락 된 다른 변수 (예 : 감마선 레이 데이터가 50 피트 간격으로 우물에서 누락되었지만 밀도 데이터가 있음). 그러나 하나의 우물에서 로깅 변수를 사용하여 동일한 로깅 변수에 있지만 다른 근처 우물에서 빠진 값을 보충하려면 어떻게해야합니까? 예를 들어, 하나의 우물에 감마선 레이 데이터가 4000-6000 피트에 있고 다른 근처에있는 감마선이 5000-50000 피트의 감마 레이를 잃어버린 경우 동일한 변수 (같은 열)를 사용하여 서로 다른 XY 좌표를 가지고 있습니까? 감사!
멜라니
아래는 웰 헤드가 누락 된 값을 가진 웰 헤드를 취하고 그 값을 평균화하고 누락 된 값을 가진 웰 헤드를 평균값으로 설정하여 웰 헤드의 값을 계산하는 예입니다.
Names Default To Here( 1 );
// Create a new table to use
dt = New Table( "Untitled 7",
Add Rows( 2500 ),
New Column( "x", Numeric, "Continuous", Format( "Best", 12 ), Set Display Width( 42 ) ),
New Column( "y", Numeric, "Continuous", Format( "Best", 12 ), Set Display Width( 83 ) ),
New Column( "data", Numeric, "Continuous", Format( "Best", 12 ), )
);
// Populate the data, leaving 2% missing data
theRow = 0;
For( i = 1, i <= 50, i++,
For( k = 1, k <= 50, k++,
theRow = theRow + 1;
:x[theRow] = i;
:y[theRow] = k;
If( Random Integer( 0, 100 ) <= 98,
:data[theRow] = Random Uniform( 800, 1000 ),
:data[theRow] = .;
write("\!nMissing value for row ", therow)
);
)
);
// Impute missing values by averaging the well heads around the missing value
For( theRow = 1, theRow <= N Rows( dt ), theRow++,
If( Is Missing( :data[theRow] ) == 1,
minX = :x[theRow] - 1;
If( minX < 1, minX = 1 );
maxX = :x[theRow] + 1;
If( maxX > 50, maxX = 50 );
minY = :y[theRow] - 1;
If( minY < 1, minY = 1 );
maxY = :y[theRow] + 1;
If( maxY > 50, maxY = 50 );
impute = 0;
count = 0;
For( i = minX, i <= maxX, i++,
For( k = minY, k <= maxY, k++,
theValue = dt:data[dt << get rows where( dt:x == i & dt:y == k )][1];
If( Is Missing( theValue ) == 0,
count
++);
impute = Sum( impute, theValue );
)
);
:Data[theRow] = impute / count;
)
);답장을 보내 주셔서 감사합니다! 나는 이것을 시도 할 것이다.