Retrieve frequents attributes over a set of records

Hi everyone

I'm quite new to Knime. I have a dataset like this

+-------+-------+---------+-------+
| class | shape | surface | color |
+-------+-------+---------+-------+
| e     | f     | k       | w     |
| e     | f     | b       | y     |
| t     | k     | s       | w     |
| e     | s     | f       | u     |
+-------+-------+---------+-------+

 

I want to mine frequents characteristics and association rules over records.
For example, rules like: shape.f => color.w, surface.s 

The "problem" is that, in this dataset, the same letter value can represent really different things. surface.s = smooth but shape.s = sunken .
I can't merge all columns in a single with a Create Collection Column and run an Association Rule Learner because i will loose the column meaning of each letter.

A solution would be to build a column like the follwing one, and run the Association Rule Learner on it but i don't know how to do this.

+------------------------------+
|       merged_attributes      |
+------------------------------+
| [shape.f, surface.k,color.w] |
| [shape.f, surface.b,color.y] |
| [shape.k, surface.s,color.w] |
| [shape.s, surface.f,color.u] |
+------------------------------+

Thank you for your help.
Best regards.

 

If you know in advance what the column names are, and there aren't too many of them, you can just use a String Manipulation node on each one with a formula like:

join("shape.", $shape$)

Thank you for the suggestion ! It works well, but unfortunately, I want to find associations over 23 columns...

It's quite big to do things by hand. Because if i understand right how String Manipulation node works, if have to create 23 of them.  So i'm looking for a more cleaner way to reach this result.

Hi Drop,

I made you a workflow which is a combination of unpivoting and groupby.

Does this help?

Cheers, Iris 

 

Thank you so much Iris ! Very elegant solution, It works perfectly and it's exactly what i need !