Hola
Tengo datos de encuestas que vienen en un formato bastante pobre y necesito ayuda para reformatear. Cuando se hace una pregunta varias veces en la encuesta, cada respuesta se coloca en una nueva columna. Una pregunta de ejemplo es: "¿En qué posición estás?" Cada respuesta de la persona que realiza la encuesta crea una columna. Necesito una forma de poner todas las columnas de datos en 1 columna larga. Proporcionaré un ejemplo a continuación. ¿Es esto posible?
Persona | Posición | Posición2 | Posición3 |
A | 1 | 2 | 3 |
B | 1 | 2 | 3 |
C | 1 | 2 | 3 |
Necesidades convertidas en:
Posición |
1 |
2 |
3 |
1 |
2 |
3 |
1 |
2 |
3 |
Sí, es posible.
Aquí está el código de consulta M
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTIEYiMgNlaK1YlWcsIQcUYViQUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Person = _t, Position = _t, Position2 = _t, Position3 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Person", type text}, {"Position", Int64.Type}, {"Position2", Int64.Type}, {"Position3", Int64.Type}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Person"}, "Attribute", "Value"),
#"Removed Columns" = Table.RemoveColumns(#"Unpivoted Other Columns",{"Attribute", "Person"}),
#"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Value", "Position"}})
in
#"Renamed Columns"
Su fuente:
Salida: