안녕하세요 여러분,
에탄올 발효 데이터를 그래프 및 기타 메트릭으로 처리하기 위해 jmp를 통합하려고 합니다. 데이터의 기존 형식을 JMP에서 사용할 수 있는 테이블로 변환하는 데 몇 가지 문제가 있습니다.
공장에서 Google 시트로 데이터를 수신합니다. 이 데이터 테이블을 JMP에 업로드할 수 있습니다. 문제는 데이터 형식과 관련이 있습니다. 데이터는 각 행의 배치 번호별로 나열되며 각 열은 "4hr Ethanol" 또는 "8hr Lactic"과 같은 숫자가 있는 텍스트 문자열입니다. 예는 아래를 참조하십시오.
| 일괄 | 0시간 에탄올 | 0시간 젖산 | 0시간 아세트산 | 4시간 에탄올 | 4시간 젖산 | 4시간 아세트산 | … | 60시간 에탄올 | 60시간 젖산 | 60시간 아세트산 |
| 1 | | | | | | | | | | |
| 2 | | | | | | | | | | |
| 삼 | | | | | | | | | | |
| 4 | | | | | | | | | | |
시간 기준으로 각 범주를 넣어야 합니다. 예를 들어 배치 2와 3에 대해 0시간에서 60시간 사이의 에탄올 농도를 그래프로 표시하고 싶습니다. 데이터 테이블, 텍스트를 열로 스택하고 recode를 사용하여 열 머리글을 텍스트 문자열에서 숫자 입력으로 시간 단위 시간으로 변경해야 한다고 생각합니다. 이 그래프를 생성하기 위해 원하는 방식으로 테이블을 얻는 데 몇 가지 문제가 있습니다. 도움을 주시면 감사하겠습니다. 미리 감사드립니다.
다음은 가상 데이터로 에탄올 차트를 생성하는 예입니다.

다음은 플롯을 생성하는 스크립트입니다.
Names Default To Here( 1 );
// Create a sample data table
dt = New Table( "Example",
Add Rows( 4 ),
New Column( "Batch", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3, 4] ) ),
New Column( "0hr Ethanol",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [103.347990080313, 90.8056789034286, 110.847323879326, 94.4892596023655] )
),
New Column( "0 hr Lactic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Selected,
Set Values( [98.2941757953967, 87.0280094785425, 96.8477348247328, 92.910237668013] )
),
New Column( "0 hr Acetic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [86.0736604847805, 84.7654940657705, 103.653020778599, 103.896496570196] )
),
New Column( "4hr Ethanol",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [106.780752584519, 83.6557999642181, 131.739275066723, 108.595538300447] )
),
New Column( "4hr Lactic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [117.501711811893, 110.280136421701, 99.5008817613032, 124.122069840277] )
),
New Column( "4hr Acetic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [65.8570956816124, 98.7590715244122, 116.085302666605, 77.465274192855] )
),
New Column( "60 hr Ethanol",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [93.2946183359449, 102.663246654816, 88.3140432209597, 77.0616091856786] )
),
New Column( "60 hr Lactic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [115.208356681673, 94.3976953097385, 117.870933434213, 88.9448640120466] )
),
New Column( "60 hr Acetic",
Numeric,
"Nominal",
Format( "", 16 ),
Set Values( [101.707143312459, 115.87798730461, 111.256786967136, 114.046044409696] )
),
Set Row States( [1, 0, 0, 0] )
);
// Stack the columns
dtStack = dt << Stack(
columns(
:"0hr Ethanol"n, :"0 hr Lactic"n, :"0 hr Acetic"n, :"4hr Ethanol"n, :"4hr Lactic"n, :"4hr Acetic"n, :"60 hr Ethanol"n, :"60 hr Lactic"n,
:"60 hr Acetic"n
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
// Create new time and Type of Gas
dtStack << New Column( "Time", Format( "h:m" ), set each value( Num( Word( 1, :label, "h" ) ) * 3600 ) );
For each row(:label = word(-1,:Label," "));
// Split out into separate columns
dtSplit dtStack << Split(
Split By( :Label ),
Split( :Data ),
Group( :Batch, :Time ),
Sort by Column Property
);
// Graph the data
Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :Time ), Y( :Ethanol ), Overlay( :Batch ) ),
Elements( Line( X, Y, Legend( 15 ) ), Points( X, Y, Legend( 16 ) ) ),
Local Data Filter(
Add Filter(
columns( :Batch ),
Where( :Batch == {1, 2} ),
Display( :Batch, N Items( 4 ) )
)
)
);
나는 실제로 이 업계에서 일했고 우리가 만난 모든 다양한 데이터 형식에 대한 좋은 기억을 가지고 있습니다. 가장 일반적으로 제공한 수평 데이터 형식입니다. Jim은 테이블을 쌓고 분할하는 작업을 조합해야 한다는 말을 정확히 옳았습니다. 위의 스크립트에 대해 아주 작은 제안을 하나 하겠습니다. 아래 줄에서 "hr:m" 형식을 사용하면 시간 대신 지속 시간 단위가 표시됩니다.
즐거운 시간 보내세요!
// Create new time and Type of Gas
dtStack << New Column( "Time", Format( "hr:m" ), set each value( Num( Word( 1, :label, "hr" ) ) * 3600 ) );