首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个字符串替换,小数到四分之一

多个字符串替换,小数到四分之一
EN

Stack Overflow用户
提问于 2021-06-01 07:13:42
回答 4查看 86关注 0票数 2

我想将.00替换为-Q1.25替换为-Q2.50替换为-Q3.75替换为-Q4,如下所示。但是,我的代码不像预期的那样工作。有什么暗示吗?

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

dt1 <- 
  tibble(Date = c(2015.00, 2015.25, 2015.50, 2015.75))

dt1
# A tibble: 4 x 1
   Date
  <dbl>
1 2015 
2 2015.
3 2016.
4 2016.

dt1 %>% 
  pull(Date)

[1] 2015.00 2015.25 2015.50 2015.75

dt1 %>% 
  mutate(Date1 = str_replace_all(string = Date, pattern = c(".00" = "-Q1", ".25" = "-Q2", ".50" = "-Q3", ".75" = "-Q4")))

# A tidytable: 4 × 2
   Date Date1  
  <dbl> <chr>  
1 2015  2015   
2 2015. 2015-Q2
3 2016. 2015.5 
4 2016. 2015-Q4
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-06-01 07:41:29

还有一个动物园的功能:

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

dt1 <- 
  tibble(Date = c(2015.00, 2015.25, 2015.50, 2015.75))

dt1 %>%
  mutate(Date1 = format.yearqtr(Date, format = "%Y.Q%q") )

# Date Date1  
# <dbl> <chr>  
# 1 2015  2015.Q1
# 2 2015. 2015.Q2
# 3 2016. 2015.Q3
# 4 2016. 2015.Q4
票数 4
EN

Stack Overflow用户

发布于 2021-06-01 08:45:58

您还可以同时使用整数除法%/%和模除法%%

代码语言:javascript
复制
paste0(dt1$Date %/% 1, '-Q',(dt1$Date %% 1)*4 +1)

[1] "2015-Q1" "2015-Q2" "2015-Q3" "2015-Q4"

因此,在管道语法中使用它

代码语言:javascript
复制
dt1 %>%
  mutate(date1 = paste0(Date %/% 1, '-Q',(Date %% 1)*4 +1))

# A tibble: 4 x 2
   Date date1  
  <dbl> <chr>  
1 2015  2015-Q1
2 2015. 2015-Q2
3 2016. 2015-Q3
4 2016. 2015-Q4
票数 3
EN

Stack Overflow用户

发布于 2021-06-01 07:20:29

代码语言:javascript
复制
vec <- c("00" = "-Q1", "25" = "-Q2", "50" = "-Q3", "75" = "-Q4")
dt1 %>%
  mutate(new = paste0(Date %/% 1, vec[sprintf("%02d", Date %% 1 * 100)]))

   Date new    
  <dbl> <chr>  
1 2015  2015-Q1
2 2015. 2015-Q2
3 2016. 2015-Q3
4 2016. 2015-Q4
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67784271

复制
相关文章

相似问题

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