将多个字符列转换为 as.Date 和 R 中的时间
Convert multiple character columns to as.Date and time in R
我们有一个任意数据集,称为 df:
enter <- c("2017-01-01", "2018-02-02", "2018-03-03")
guest <- c("Foxtrot","Uniform","Charlie","Kilo")
disposal <- c("2017-01-05", "2018-02-05", "2018-03-09")
rating <- c("60","50","50")
date <- c("2017-04-10", "2018-04-15", "2018-04-20")
clock <- c("16:02:00", "17:02:00", "18:02:00")
rolex <- c("20:10:00", "20:49:00", "17:44:00")
df <- data.frame(enter,guest,disposal,rating,date,clock,rolex, stringsAsFactors = F)
我试图完成的是更改列 enter、disposal 和 date 从字符到日期,使用 dplyr 包。
所以,我想出了以下内容,只需将它们链接在一起即可:
library(dplyr)
library(chron)
df2 <- df %>% mutate(enter = as.Date(enter, format = "%Y-%m-%d"))
%>% mutate(disposal = as.Date(disposal, format = "%Y-%m-%d"))
%>% mutate(date = as.Date(date, format = "%Y-%m-%d"))
我所追求的是:dplyr 需要哪个 mutate 函数来摆脱多重链接,即当我们有很多带有暗示日期的任意命名的列时?我想按名称指定列,然后应用 as.Date 函数将它们从字符更改为日期。
一些不适用于本案例的不同操作的解决方案:
1:
2:
3: change multiple character columns to date
例如,我尝试过,但没有成功:
df2 <- df %>% mutate_at(data = df, each_of(c(enter, disposal, date)) = as.Date(format = "%Y-%m-%d"))
此处给出:dplyr change many data types
作为奖励
注意 clock 和 rolex 列。使用 chron 包简单地将它们转换为正确的格式,即时间而不是字符
df2 <- df %>% mutate(clock = chron(times = clock)) %>% mutate(rolex = chron(times = rolex))
如这里所建议的那样:
convert character to time in r
现在,是否可以在没有所有链接的情况下使用相同的解决方案,尤其是当我们有任意数量的具有不同命名等的列时?
您只需调整 mutate_at
的参数。 as.Date
的任何附加参数都指定为 mutate_at
.
的参数
df2 <- df %>% mutate_at(vars(enter,disposal,date), as.Date, format="%Y-%m-%d")
你问题的第二部分有类似的解决方案。
df2 <- df2 %>% mutate_at(vars(clock, rolex), function(x) chron(times. = x))
我们有一个任意数据集,称为 df:
enter <- c("2017-01-01", "2018-02-02", "2018-03-03")
guest <- c("Foxtrot","Uniform","Charlie","Kilo")
disposal <- c("2017-01-05", "2018-02-05", "2018-03-09")
rating <- c("60","50","50")
date <- c("2017-04-10", "2018-04-15", "2018-04-20")
clock <- c("16:02:00", "17:02:00", "18:02:00")
rolex <- c("20:10:00", "20:49:00", "17:44:00")
df <- data.frame(enter,guest,disposal,rating,date,clock,rolex, stringsAsFactors = F)
我试图完成的是更改列 enter、disposal 和 date 从字符到日期,使用 dplyr 包。 所以,我想出了以下内容,只需将它们链接在一起即可:
library(dplyr)
library(chron)
df2 <- df %>% mutate(enter = as.Date(enter, format = "%Y-%m-%d"))
%>% mutate(disposal = as.Date(disposal, format = "%Y-%m-%d"))
%>% mutate(date = as.Date(date, format = "%Y-%m-%d"))
我所追求的是:dplyr 需要哪个 mutate 函数来摆脱多重链接,即当我们有很多带有暗示日期的任意命名的列时?我想按名称指定列,然后应用 as.Date 函数将它们从字符更改为日期。
一些不适用于本案例的不同操作的解决方案:
1:
2:
3: change multiple character columns to date
例如,我尝试过,但没有成功:
df2 <- df %>% mutate_at(data = df, each_of(c(enter, disposal, date)) = as.Date(format = "%Y-%m-%d"))
此处给出:dplyr change many data types
作为奖励
注意 clock 和 rolex 列。使用 chron 包简单地将它们转换为正确的格式,即时间而不是字符
df2 <- df %>% mutate(clock = chron(times = clock)) %>% mutate(rolex = chron(times = rolex))
如这里所建议的那样: convert character to time in r
现在,是否可以在没有所有链接的情况下使用相同的解决方案,尤其是当我们有任意数量的具有不同命名等的列时?
您只需调整 mutate_at
的参数。 as.Date
的任何附加参数都指定为 mutate_at
.
df2 <- df %>% mutate_at(vars(enter,disposal,date), as.Date, format="%Y-%m-%d")
你问题的第二部分有类似的解决方案。
df2 <- df2 %>% mutate_at(vars(clock, rolex), function(x) chron(times. = x))