Wolfram的Dataset功能,很有趣,某方面像在下棋,我列一些我實際遇到有挑戰性的問題,大家玩玩看.
如下圖的Dataset,將紅圈填入對應值

dataset = Dataset[{
<|"a" -> 1, “b" -> “x", “c" -> “1″|>,
<|"a" -> 2, “b" -> “x", “c" -> “-“|>,
<|"a" -> 6, “b" -> “z", “c" -> “3″|>,
<|"a" -> 7, “b" -> “-“, “c" -> “4″|>,
<|"a" -> 8, “b" -> “fz", “c" -> “4″|>,
<|"a" -> 9, “b" -> “-“, “c" -> “-“|>,
<|"a" -> 3, “b" -> “y", “c" -> “2″|>,
<|"a" -> 4, “b" -> “y", “c" -> “-“|>,
<|"a" -> 5, “b" -> “-“, “c" -> “3″|>}];
我的做法如下
rulelist =
dataset[Select[(#[“b"] =!= “-“) [And] (#[“c"] =!=
“-“) &], {{“-“, #[“c"]} -> {#[“b"], #[“c"]}, {#[“b"],
“-“} -> {#[“b"], #[“c"]}} &] // Normal // Flatten;
final = dataset[
All,#~Join~
AssociationThread[{“b", “c"} ->
Replace[{#[“b"], #[“c"]}, rulelist]] &];
{dataset, final}
將2表差異的地方,塗上顏色

final1 = final[All, <|"A" -> “a", “B" -> “b", “C" -> “c"|>];
join = (dataset // Transpose)~Join~(final1 // Transpose) // Transpose;
colorJoin = join[All, #~Join~
<|"b" ->
If[#[“b"] =!= #[“B"],
Style[#[“b"], Background -> Yellow], #[“b"]],
“B" ->
If[#[“b"] =!= #[“B"],
Style[#[“B"], Background -> Yellow], #[“B"]],
“c" ->
If[#[“c"] =!= #[“C"],
Style[#[“c"], Background -> Green], #[“c"]],
“C" ->
If[#[“c"] =!= #[“C"],
Style[#[“C"], Background -> Green], #[“C"]]|> &];
{colorJoin[All, {“a", “b", “c"}], colorJoin[All, {“A", “B", “C"}]}