你好,
我發現2015 年的一個討論(主題“sumif”)對我當前的任務有一個非常有用的腳本。我在那裡寫了我的問題,但我不知道參與該討論的人是否可以看到我的問題。
我發現這個腳本(稍作修改),它非常適合計算值為“0/0”(或其他)的每一行的列。
dt << New Column("Sum",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Column(i)[] =="0/0")}, n))
)
)
);但是,如何編輯此腳本來計算包含「some_character」的欄位?
我附上了一個數據表,其中最後一列“Sum”有一個公式和所需的結果數字。
我有一個大數據表,並且想要一個腳本來計算具有特定值(作為字元)的每一行的列。
我嘗試修改上面的腳本,但它不起作用:
dt << New Column("Miss",
Numeric, Formula(
Local({i = 0, n = N Col(Current Data Table()) - 1},
Sum(Repeat({i++ ; (Contains(Column(i)[],"."))}, n))
)
)
);</CODE>Please, help</P><P>瓦倫蒂娜</P></LINGO-BODY><LINGO-LABS id="lingo-labs-737490" slang="en-US" mode="CREATE"><LINGO-LABEL>自動化和腳本編寫</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-737514" slang="en-US" mode="CREATE">回覆:sumif:計算列是否包含某些字符</LINGO-SUB><LINGO-BODY id="lingo-body-737514" slang="en-US" mode="CREATE"><P>您需要為此制定一個公式嗎?</P></LINGO-BODY><LINGO-SUB id="lingo-sub-737576" slang="en-US" mode="CREATE">回覆:sumif:計算列是否包含某些字符</LINGO-SUB><LINGO-BODY id="lingo-body-737576" slang="en-US" mode="CREATE"><P>抱歉,我不明白你的問題。</P><P>我有一個表 ~500,000 行和 ~3,000 列。我需要計算包含點的列的總和 - 不能使用公式。 。</P><P>我想要一個腳本,任何可行的腳本。我嘗試了不同的方法,但沒有一個有效。 。</P></LINGO-BODY><LINGO-SUB id="lingo-sub-737577" slang="en-US" mode="CREATE">回覆:sumif:計算列是否包含某些字符</LINGO-SUB><LINGO-BODY id="lingo-body-737577" slang="en-US" mode="CREATE"><P>這是來自我的日誌:</P><P> </P><P>列總和公式中斷<BR />在存取或評估 'Contains' 時,第 421001 行的參數類型錯誤,錯誤參數( Column( i )[] ), Contains/*###*/(Column( i )[], ".")<BR />公式計算錯誤已被忽略</P></LINGO-BODY><LINGO-SUB id="lingo-sub-737582" slang="en-US" mode="CREATE">回覆:sumif:計算包含某些字元的列</LINGO-SUB><LINGO-BODY id="lingo-body-737582" slang="en-US" mode="CREATE"><P>您的循環很可能會到達某個不是字元列的列。這部分很可能需要一些修改</P>
<PRE><CODE class=" language-jsl">n = N Col(Current Data Table()) - 1
如果不了解您的數據,就很難知道該如何完成。它可能只是對 -1 的簡單修改,取得字元列列表或透過某種模式計算要遍歷哪些列
我在我的帖子中附上了一個小數據表。它有 3 行 3 列,帶有標題:
S1 S2 S3
0/0./. 0/0
./. ./. ./.
0/0 0/0 0/0
該腳本在此範例表中不起作用
列總和公式中斷
存取或評估 'Contains' 時第 1 行的參數型別錯誤,錯誤參數( Column( i )[] ), Contains/*###*/(Column( i )[], ".")
公式計算錯誤已被忽略
您附加的原始資料表不是這樣的,因為它有 4 個欄位(您不能忽略 Sum 欄位)

根據您的數據,如果我要使用公式,這就是我會這樣做的方式(很可能我會避免這種情況,只使用純腳本解決方案)
Names Default To Here(1);
dt = Open("$DOWNLOADS/sum_help_data.jmp");
dt << Delete Column("Sum");
dt << New Column("Miss", Numeric, Continuous, Formula(
As Constant(
cols_of_interest = Filter Each({colname}, Current Data Table() << Get Column Names("String"),
!IsMissing(Regex(colname, "S\d"));
);
);
Local({
res = 0;
},
For Each({colname}, cols_of_interest,
res = res + (Contains(Column(colname)[], ".") > 0);
);
res;
);
));