繁体   English   中英

将data.frame中的列转换为日期

[英]Convert column in data.frame to date

我的数据框

a1 <- c("a","a","b","b","c","d","e","e")
b2 <- c("01.01.2015", "02.02.2015", "14.02.2012", "16.08.2008", "17.06.2003", "31.01.2015", "07.01.2022", "09.05.2001")
c3 <- c("1a", "2b", "3c", "4d", "5e", "6f", "7g", "8h")
d3 <- c(1:8)

df2 <- data.frame(a1,b2,c3,d3, stringsAsFactors = F)

我的代码。

library(dplyr)
library(magrittr)

test <- df2 %>%
    group_by(a1) %>% 
    as.Date(b2, format = "%d.%m.%Y")

as.Date.default(。,b2,format =“%d。%m。%Y”)中的错误:不知道如何转换'。' 将“日期”分类

好吧,我尝试了没有管道:

df$b2 <- as.Date(df$b2, format = "%d.%m.%Y")

df $ b2中的错误:“关闭”类型的对象不可子集化

第一:由于我(据我所知)正在做同样的事情,为什么会收到两个不同的错误消息?

第二,为什么我不能将列转换为日期?

我可能还应该补充一点,我知道使用mutate将列更改为date格式。 但是我想知道为什么我的方法行不通。

mutate进行转换

df2 %>%
   group_by(a1) %>%
   mutate(b2=as.Date(b2, format = "%d.%m.%Y"))
#    a1         b2    c3    d3
#  (chr)     (date) (chr) (int)
#1     a 2015-01-01    1a     1
#2     a 2015-02-02    2b     2
#3     b 2012-02-14    3c     3
#4     b 2008-08-16    4d     4
#5     c 2003-06-17    5e     5
#6     d 2015-01-31    6f     6
#7     e 2022-01-07    7g     7
#8     e 2001-05-09    8h     8

如果只需要进行转换,则不需要按“ a1”分组。

mutate(df2, b2= as.Date(b2, format= "%d.%m.%Y")

通过使用magrittr %<>%运算符,我们可以就地进行变换。

df2 %<>%
  mutate(b2= as.Date(b2, format= "%d.%m.%Y")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM