跨多列計算值你好,
我主要是 SPSS 用戶並且是 JMP 的新手,我想在 JMP 中找到類似/相同的“個案內計數值”的 SPSS 函數。
我想計算報告“完全沒有”、(0)“輕微”、(1)“有點”、(2)“中等”、(3) 和“非常”(4) 之一的受訪者人數跨列 Know_1 到 Know_3。
然後,我將創建一個名為“Know_total”的單獨列,其中包含每個答案的受訪者總數,以得出類似“35 名受訪者在知識評估中回答“適度”的結論”
因為在 SPSS 中,這是一個兩步過程(計算某些值的數量 > 在另一列中將它們重新編碼為所需的值),這就是為什麼我以這種方式措辭我的問題,但如果有的話請教我一個更快的選擇.
我不在乎它是否在 JSL 中 

回复:跨多列計算值您正在使用變量 New 引用名為“New”的數據集。 但是該變量不指向任何東西。 這應該可以解決問題:
dt1 = data table("New");
dt2 = dt1 << Stack(
columns( :Know_1, :Know_2, :Know_3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);回复:跨多列計算值你好, pmroz
是的,但是當我嘗試使用我的數據集名稱(“New”)時,腳本不起作用(更像是什麼都沒發生 TT),
我只是假設以某種方式需要所有腳本序列,也許腳本的第一個序列與它有關......
你介意挑我在這裡做錯了什麼嗎?
dt2 <SPAN class="token operator">=</SPAN> New <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> Stack<SPAN class="token punctuation">(</SPAN>
columns<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Know_1<SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>Know_2<SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>Know_3 <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Source Label <SPAN class="token function">Column</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Label"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Stacked Data <SPAN class="token function">Column</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Data"</SPAN> <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
dt2 <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> <SPAN class="token function">New Column</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token string">"Value"</SPAN><SPAN class="token punctuation">,</SPAN> Character<SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Nominal"</SPAN><SPAN class="token punctuation">,</SPAN>
Formula<SPAN class="token punctuation">(</SPAN>
<SPAN class="token function">If</SPAN><SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Data <SPAN class="token operator">==</SPAN> <SPAN class="token number">0</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Not at all"</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token punctuation">:</SPAN>Data <SPAN class="token operator">==</SPAN> <SPAN class="token number">1</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Slightly"</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token punctuation">:</SPAN>Data <SPAN class="token operator">==</SPAN> <SPAN class="token number">2</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Somewhat"</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token punctuation">:</SPAN>Data <SPAN class="token operator">==</SPAN> <SPAN class="token number">3</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Moderately"</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token punctuation">:</SPAN>Data <SPAN class="token operator">==</SPAN> <SPAN class="token number">4</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token string">"Extremely"</SPAN>
<SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
dtab <SPAN class="token operator">=</SPAN> dt2 <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN> Tabulate<SPAN class="token punctuation">(</SPAN>
<SPAN class="token function">Show</SPAN> Control Panel<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">0</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
<SPAN class="token function">Add</SPAN> Table<SPAN class="token punctuation">(</SPAN> <SPAN class="token function">Row</SPAN> Table<SPAN class="token punctuation">(</SPAN> Grouping Columns<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>Value <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN> <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
謝謝
回复:跨多列計算值我們只是創建虛擬表,並使用 SET VALUES 命令添加值。 我希望您的數據已經存在於您的表格中?
回复:跨多列計算值
你好pmroz和ian_jmp感謝您的及時回复!
我還有一個關於設置值 ([]) 的問題。
我總共有 3,465 行,看起來像
dt1 = 新表( "", 添加行( 3,465 ),
……?
因此,我在您提供的腳本中了解到,設置值是從第1行到第6行的數值,並且隨著行號的變化,設置值腳本也會發生變化,
但我不明白它的作用……抱歉,我不熟悉 JSL。
回复:跨多列計算值您還可以考慮使用功能非常強大的分類平台。 下面的代碼重現了上面的例子:
NamesDefaultToHere(1);
// Test data with 'Value Labels'
dt = New Table( "Test",
Add Rows( 6 ),
New Column( "Know_1",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Value Labels(
{0 = "Not at all", 1 = "Slightly", 2 = "Somewhat", 3 = "Moderately", 4 = "Extremely"}
),
Use Value Labels( 1 ),
Set Values( [2, 1, 2, 3, 4, 2] )
),
New Column( "Know_2",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Value Labels(
{0 = "Not at all", 1 = "Slightly", 2 = "Somewhat", 3 = "Moderately", 4 = "Extremely"}
),
Use Value Labels( 1 ),
Set Values( [2, 1, 2, 4, 2, 3] )
),
New Column( "Know_3",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Value Labels(
{0 = "Not at all", 1 = "Slightly", 2 = "Somewhat", 3 = "Moderately", 4 = "Extremely"}
),
Use Value Labels( 1 ),
Set Values( [0, 1, 1, 1, 2, 4] )
)
);
// Try 'Analyze > Consumer Research > Categorical' with 'Multiple Resoponses'
dt << Categorical( Multiple Response( :Know_1, :Know_2, :Know_3 ), Legend( 0 ) );回复:跨多列計算值下面是一種使用 STACK、公式列和 TABULATE 的方法。 我假設原始表格中有答案的數字。
dt1 = New Table( "", Add Rows( 6 ),
New Column( "Know_1", Numeric, "Ordinal", Format( "Best", 12 ),
Set Values( [2, 1, 2, 3, 4, 2] )
),
New Column( "Know_2", Numeric, "Ordinal", Format( "Best", 12 ),
Set Values( [2, 1, 2, 4, 2, 3] )
),
New Column( "Know_3", Numeric, "Ordinal", Format( "Best", 12 ),
Set Values( [0, 1, 1, 1, 2, 4] )
)
);
dt2 = dt1 << Stack(
columns( :Know_1, :Know_2, :Know_3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dt2 << New Column( "Value", Character, "Nominal",
Formula(
If( :Data == 0, "Not at all",
:Data == 1, "Slightly",
:Data == 2, "Somewhat",
:Data == 3, "Moderately",
:Data == 4, "Extremely"
)
)
);
dtab = dt2 << Tabulate(
Show Control Panel( 0 ),
Add Table( Row Table( Grouping Columns( :Value ) ) )
);