我們都曾經遇過這種情況:Excel 表格格式美觀,卻完全沒有考慮可分析性。
在自由文字單元格中,它看起來像這樣:
m/d:文本 [alt+enter]
m/d:文本 [alt+enter]
m/d:文本 [alt+enter]
m/d:文本 [alt+enter]
…
m/d:文本 [alt+enter]
當資料匯出到 JMP 時,儲存格會折疊成:m/d: 文字 m/d: 文字 m/d: 文字 ... m/d: 文字。
我希望將包含 n 個元素的長字串解析成一行,每個元素佔一行,而不是分成多列。 n 是可變的。這將建立一個新的資料表,複製其他列並新增解析後的元素。這並非文字分列,而是文字分成多行。
幸好 #/# 的使用很穩定,所以我可以統計這些值並循環 n 次。
有沒有人做過類似的事情?
我經常做這種事情;您只需要瀏覽它。 這是一個示例,其中列1具有多個值,而列2是靜態的。
dt = New Table( "Test", Add Rows( 3 ), Set Cell Height( 83 ),
New Column( "Column 1", Character, "Nominal",
Set Values(
{"5/3: ABCDE
5/4: DEF
5/5: GHI",
"5/6: xyz
5/7: foo
5/8: bar
5/9: Hello
5/10: World",
"4/16: The
4/17: Entire
4/18: Scheme
4/19: Of
4/20: Things
4/21: Is broken"} ),
Set Display Width( 156 )
),
New Column( "Column 2", Character, "Nominal", Set Values( {"A", "B", "C"} ) )
);
dtnew = new table("Text_to_Rows",
new column("Column 1", Character, "Nominal"),
new column("Column 2", Character, "Nominal"),
);
delim = "
";
m = 0;
for (i = 1, i <= nrows(dt), i++,
c1_words = words(dt:column 1[i], delim);
one_c2 = dt:column 2[i];
for (k = 1, k <= nitems(c1_words), k++,
dtnew << add rows(1);
m++;
dtnew:Column 1[m] = c1_words[k];
dtnew:Column 2[m] = one_c2;
);
);
彼得:
謝謝!做到了。我欠您選擇的飲料。
我正在與數據的創建者合作,以平面格式輸入數據...