R - 使用 Map() 进行类型转换
R - Type Casting With Map()
我想创建一个新列,将时间戳中的小时提取为数字数据类型。如果我有一个数据框或 tibble,我会按如下方式进行:
calories_hourly$activity_hour_num <- calories_hourly$activity_hour %>% mdy_hms() %>% format(format = ('%H')) %>% as.numeric()
但是,我有一个名为“fitbit_data”的 18 个 tibbles 列表,我想在其中对 tibbles 6-16 执行上述操作。类型转换是从我所有 tibbles 中的第二列计算得出的。我在下面有一个失败尝试开始的例子:
fitbit_data[6:16] <- fitbit_data[6:16] %>% mutate(activity_hour_num=map(.x=fitbit_data[6:16], .f=~mdy(.x[2])))
你能帮我为这个 R 任务编写一个整洁的解决方案吗?
非常感谢!
您可以将 map
用作 -
library(purrr)
library(lubridate)
library(dplyr)
k <- 6:16
fitbit_data[k] <- map(fitbit_data[k], ~{.x[[2]] <- lubridate::mdy(.x[[2]]);.x})
基于你能做的第一次尝试-
fitbit_data[k] <- map(fitbit_data[k], ~.x %>%
mutate(activity_hour = mdy_hms(activity_hour) %>%
format('%H') %>% as.numeric()))
我想创建一个新列,将时间戳中的小时提取为数字数据类型。如果我有一个数据框或 tibble,我会按如下方式进行:
calories_hourly$activity_hour_num <- calories_hourly$activity_hour %>% mdy_hms() %>% format(format = ('%H')) %>% as.numeric()
但是,我有一个名为“fitbit_data”的 18 个 tibbles 列表,我想在其中对 tibbles 6-16 执行上述操作。类型转换是从我所有 tibbles 中的第二列计算得出的。我在下面有一个失败尝试开始的例子:
fitbit_data[6:16] <- fitbit_data[6:16] %>% mutate(activity_hour_num=map(.x=fitbit_data[6:16], .f=~mdy(.x[2])))
你能帮我为这个 R 任务编写一个整洁的解决方案吗?
非常感谢!
您可以将 map
用作 -
library(purrr)
library(lubridate)
library(dplyr)
k <- 6:16
fitbit_data[k] <- map(fitbit_data[k], ~{.x[[2]] <- lubridate::mdy(.x[[2]]);.x})
基于你能做的第一次尝试-
fitbit_data[k] <- map(fitbit_data[k], ~.x %>%
mutate(activity_hour = mdy_hms(activity_hour) %>%
format('%H') %>% as.numeric()))