gpt4 book ai didi

r - 将 tidyverse %>% 管道与日期和格式() 一起使用;如何防止 gobbledygook 字符?

转载 作者:行者123 更新时间:2023-12-02 08:00:36 25 4
gpt4 key购买 nike

我有一个小标题,其中有一列格式为日期。出于问题的目的,我将生成类似的数据(真实数据要大得多!):

> dates = tribble(~YrMon, "2011-01-01", "2011-02-01", "2011-03-01", "2011-04-01") 
%>% mutate(YrMon = as.Date(YrMon))
> dates
# A tibble: 4 x 1
YrMon
<date>
1 2011-01-01
2 2011-02-01
3 2011-03-01
4 2011-04-01

我只想隔离月份。当我在不使用管道的情况下提取月份时,它按预期工作:

> format(dates$YrMon, "%m")
[1] "01" "02" "03" "04"

但是,当我使用 tidyverse 管道执行我认为应该相同的操作时,我得到了 gobbledygook(我假设这是返回的 tibble 的某种格式):

> dates %>% format(.$YrMon, "%m")
[1] "\033[38;5;246m# A tibble: 4 x 1\033[39m"
[2] " YrMon "
[3] " \033[3m\033[38;5;246m<date>\033[39m\033[23m "
[4] "\033[38;5;250m1\033[39m 2011-01-01"
[5] "\033[38;5;250m2\033[39m 2011-02-01"
[6] "\033[38;5;250m3\033[39m 2011-03-01"
[7] "\033[38;5;250m4\033[39m 2011-04-01"

发生了什么,有没有办法使用 %>% 管道获得预期的答案?

最佳答案

您可以通过多种方式获得所需的输出。我们可以使用 pull 来提取我们的目标列并按如下方式处理:

dates %>% pull(YrMon) %>% format(., "%m")
[1] "01" "02" "03" "04"

或者,我们可以简单地使用 mutate 如下:

dates %>% 
mutate(YrMon = format(YrMon, "%m"))
# A tibble: 4 x 1
YrMon
<chr>
1 01
2 02
3 03
4 04

也可以通过 lubridatemonth 获取月份(返回一个整数):

dates %>% 
mutate(YrMon = month(YrMon))
# A tibble: 4 x 1
YrMon
<int>
1 1
2 2
3 3
4 4

使用 map(给我们一个列表,使用 map_* 覆盖):

dates %>% 
map(.,format,"%m")
$YrMon
[1] "01" "02" "03" "04"

不使用管道,可以简单地做:

with(dates, format(YrMon, "%m"))
[1] "01" "02" "03" "04"

关于r - 将 tidyverse %>% 管道与日期和格式() 一起使用;如何防止 gobbledygook 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57908315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com