我有一些数据,试图将玩家名称与一系列有限的基于首字母缩略词的属性分开,这些属性使用 Power Query 添加到玩家名称的末尾。属性的数量因玩家而异。大约有 20 个已知属性,例如 UER、RC、COR,并且全部大写。名字后面的后缀使事情变得更加复杂,例如 Jr.、Sr. 等。以下是数据示例:
数据 |
---|
鲍勃·布伦利 |
杰米·莫耶 |
小卡尔·瑞普肯 |
肯·卡米尼蒂 UER |
肯尼·罗杰斯 RC |
劳埃德·麦克伦登错误 |
劳埃德·麦克伦登 COR,RC |
我想要一张像这样的桌子:
姓名 | 属性 |
---|---|
鲍勃·布伦利 | |
杰米·莫耶 | |
小卡尔·瑞普肯 | |
肯·卡米尼蒂 | UER |
肯尼·罗杰斯 | RC |
劳埃德·麦克伦登 | 错误 |
劳埃德·麦克伦登 | 错误,错误 |
我已经尝试了各种列拆分、按示例列等,但无法在不将 Jr.、Sr. 等拉入“属性”列的情况下分离此内容。关于如何使用 Power Query 甚至 Excel 正确执行此操作有什么想法吗?
我无法弄清楚如何一步完成,但您可以尝试查找最后一个小写字母(或句点)并将其用作要拆分的索引。
let
Source = Table.FromRows(
{
{"Bob Brenly"},
{"Jamie Moyer"},
{"Cal Ripken, Jr."},
{"Ken Caminiti UER"},
{"Kenny Rogers RC"},
{"Lloyd McClendon ERR"},
{"Lloyd McClendon COR, RC"}
},
type table [Data = text]
),
AddSplitIndex = Table.AddColumn(
Source,
"SplitIndex",
each Text.PositionOfAny([Data], {"a" .. "z", "."}, Occurrence.Last),
Int64.Type
),
AddName = Table.AddColumn(
AddSplitIndex,
"Name",
each Text.Start([Data], [SplitIndex] + 1),
type text
),
AddAttributes = Table.AddColumn(
AddName,
"Attributes",
each Text.Trim(Text.RemoveRange([Data], 0, [SplitIndex] + 1)),
type text
)
in
AddAttributes