首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >较大字段的文本到列

较大字段的文本到列
EN

Stack Overflow用户
提问于 2020-04-22 07:03:04
回答 1查看 71关注 0票数 0

所以我在"Names“下面有一列,用竖线分隔,这列的一个单元格如下所示:

Tom Miner | John Smith | Mary Lane | Tom Bell | Steve Hall | Martin Long | John Small | Mark Tall | Ann | Alan Call | David Fall | Clint Mall |

这是一个10,000个字段的数据帧,我想用字段中的前4个名称为" names“创建4个新列:

代码语言:javascript
运行
复制
Lead Actor    Lead Supporting Actor   Supporting Actor 1    Supporting Actor 2 
Tom Miner     John Smith              Mary Lane             Tom Bell

列中可以有多达40个名称,也可以有10个名称,但我只想将字段拆分到上面的4列中。

我试着重塑和整理,但不能得到这个工作,任何帮助感谢。

该列为"Names":

一号牢房布拉德·皮特|汤米·李·琼斯|露丝·内加|约翰·奥尔蒂斯|丽芙·泰勒|唐纳德·萨瑟兰|格雷格·布莱克|罗兰·迪恩|金伯利·伊莉丝|约翰·芬恩| LisaGay汉密尔顿|唐尼·凯沙沃兹|鲍比·尼什|肖恩·布莱克莫尔|弗瑞达·福赫申|凯拉·亚当斯|拉维·卡普尔| Elisa·佩里|丹尼尔·索利|吉米·希尔兹|库纳尔·杜德赫克|贾斯汀·德雷|亚历山大·罗塞特|娜塔莎·里昂|佐罗·萨罗·曼努埃尔·达格利安|雅各布·桑德勒|伊丽莎白·威拉曼

2号牢房| Eiza Gonz‘lez| Sam Heughan | Toby Kebbell | Talulah Riley | Lamorne Morris | Guy Pearce | Jay |hannes JóAnderson | Alex Hernandez | Siddharth Dhananjay | Tamer Burjaq | Clyde Berning | David Dukas | Tyrel Meyer | Alex Anlos | Maarten R Tamer| Patrick Kerton | Ryan Kruger Will Smith | Martin Lawrence | Paola Dennis±ez| Vanessa Hudgens | Alexander Ludwig | Charles Melton |凯特·德尔·卡斯蒂利亚诺| Joe Pantoliano | Theresa Randle | Jacob Scipio | Massi Jay| Michael Bay | DJ哈立德| Derrick Gilbert |Jay Dubb |艾米丽·托尔斯| Rapp Happy Anderson|Ryan Kruger Will Smith|Martin Lawrence|Paola Nu Anlos±ez|Vanessa Ludwig|Charles Melton|Michael Melton|Jacob Scipio|Massi Jay|Michael Bay|DJ Khaled |Derrick Gilbert|Jay Dubb| Emily |Rapp|Rapp Happy Anderson| Melissa Will Smith|Vanessa Ludwig|Charles Melton|凯特·德尔·卡斯蒂利亚| Nicky Jam |Joe Pantoliano|Theresa Randle|Jacob Scipio|Massi Jay|Michael Bay|DJ哈立德|Derrick Gilbert|Jay Dubb|艾米丽·托尔斯|拉普·斯科特·安德森|莱恩·克鲁格·威尔·史密斯|马丁·劳伦斯|保拉·努瓦尼斯|瓦内萨·哈金斯|尼基·贾姆|乔·潘托利亚诺|特蕾莎·弗莱尔|雅各布·西皮奥|马西·兰|迈克尔·贝|DJ·哈立德|德里克·吉尔伯特|杰伊·杜布|艾米丽·托尔斯|拉普·斯科特·安徒森|莱恩·克鲁格·威尔·史密斯

牢房3: Paul Rudd | Michael Douglas | Evangeline Lilly | Corey Stoll | Bobby Cannavale | Anthony Mackie |朱迪·格里尔| Abby Ryder Fortson | Michael Pe a±a| David Dastmalchian | T.I | Wood Harris | Hayley Atwell | John Slattery | Martin Donovan | Garrett Morris | Gregg Turkington | Rod Hallett | Joe Chrest | Joe Bucaro III | Jean Louisa Kelly | Dax Griffin | Hayley Lovitt | Anna Akana | Stan Lee | Chris Evans | Sebastian Stan | Tom Kenny | Norma Alvarez | Darcie Isabella Cottrell | Teddy Williams | Carol Anne Watts | Chuck Chiritescu | Neko Parham | Onira Tares | Kylen戴维斯|扎马尼·怀尔德|吉姆·R·科尔曼|德斯蒙德·菲利普斯|亚伦·萨克斯顿|迈克尔·A·库克|里克·兰德|罗斯·布莱克威尔|约翰尼·彭伯顿|尼古拉斯·巴雷拉|卡洛斯·阿维利斯|林赛·LaRose |罗伯特·克雷顿|阿贾尼·帕金斯|杰西·詹姆斯·洛克瑞尔|扎克·杜哈姆|凯文·拉克兹|迈克尔·特里斯勒|丹尼尔·史蒂文斯|亚历克斯·钱斯基|克莱·唐纳修·丰特诺|迈克尔·贾莫斯基|凯西·皮雷蒂|安塔尔·卡利克|亚当·哈特|鲁本·兰登|托德·施耐德|凯文·巴蒂默|丹尼·瓦斯克斯|里克·艾弗里|埃里克·贝茨

我想要达到的结果是一个人1人2人3人4

布拉德·皮特汤米·李·琼斯露丝·内加·约翰·奥尔蒂斯

因此,我的数据框中有5个新列-单元格中的其余名称不是必需的

EN

回答 1

Stack Overflow用户

发布于 2020-04-22 08:56:43

假设您的数据有一个包含10,000个单元格的列&每个单元格都具有与您提供的示例类似的值,您可以使用tidyr包中的separate

代码语言:javascript
运行
复制
# sample data 
df <- data.frame(Names = "Tom Miner | John Smith | Mary Lane | Tom Bell | Steve Hall | Martin Long | John Small", stringsAsFactors = FALSE)

library(tidyr)
df %>% separate(Names, c("Lead Actor", "Lead Supporting Actor", "Supporting Actor 1", "Supporting Actor 2"), sep = " \\| ", extra = "drop")

在这里,代码用分隔符“|”(字符串‘|’用转义('\')分隔Names (包含所有名称的列)),我们保留前四个名称,删除其余的。

有关separate的更多信息,请访问:https://tidyr.tidyverse.org/reference/separate.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61354637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档