首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将日期数据拆分为R中的3列

将日期数据拆分为R中的3列
EN

Stack Overflow用户
提问于 2022-09-21 15:57:46
回答 3查看 40关注 0票数 -1

我需要将'fiction_work‘专栏(见图)分为三个独立的专栏“工作”、“作者”、“年份”。

图片:https://i.stack.imgur.com/nRat5.jpg

我试过这个,但只想把“作品”和“作者”分开。我真的不明白如何才能把这一年分开。

分隔<-分离(合计,col =‘虚构_works’,into = c('work','author'),sep= ",")

我正在尽我最大的努力来提高我的R技能,但无法理解这一项。任何帮助都是非常感谢的。提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2022-09-21 16:31:31

这可以通过使用正则表达式很容易地使用dplyrstr_extract来完成。

可复制数据

代码语言:javascript
复制
library(tidyverse)

df <- data.frame(fiction_works = c("The A.B.C Murders (1936), Agatha Christie",
                                   "A ton image (1998), Louise L. Lambrichs",
                                   "About A Boy (1998), Nick Horriby"))

溶液

代码语言:javascript
复制
df2 <- df %>% 
  mutate(Work = str_extract(string = fiction_works, pattern = ".+(?=\\s\\()"),
         Author = str_extract(string = fiction_works, pattern = "(?<=,\\s).+"),
         Year = str_extract(string = fiction_works, pattern = "[0-9]+")) %>% 
  select(Work:Year)


df2
               Work              Author Year
1 The A.B.C Murders     Agatha Christie 1936
2       A ton image Louise L. Lambrichs 1998
3       About A Boy        Nick Horriby 1998

如果标题中有数字,您可能会遇到问题,但我无法通过发布的图片判断您是否有此问题。

票数 1
EN

Stack Overflow用户

发布于 2022-09-21 16:40:37

代码语言:javascript
复制
library(tidyverse) 

df %>%
   extract(fiction_works, c("work", "year", "author"), "(.*?) [(](\\d+)[), ]+(.*)")
                   work year              author
    1 The A.B.C Murders 1936     Agatha Christie
    2       A ton image 1998 Louise L. Lambrichs
    3       About A Boy 1998        Nick Horriby
票数 1
EN

Stack Overflow用户

发布于 2022-09-21 16:50:33

使用base R

代码语言:javascript
复制
read.csv(text = sub("\\)", "", sub("\\s*\\(", ",", df$fiction_works)),
    header = FALSE, col.names = c("work", "year", "author"))

-output

代码语言:javascript
复制
               work year               author
1 The A.B.C Murders 1936      Agatha Christie
2       A ton image 1998  Louise L. Lambrichs
3       About A Boy 1998         Nick Horriby
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73803796

复制
相关文章

相似问题

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