如何将函数应用于 R 中的数据帧列表?
How can I apply a function to a list of dataframes in R?
我正在尝试绑定许多数据帧。它们都具有相同的列数和相同的列名。
但是,bind_rows 将不起作用,因为某些数据框将特定列存储为日期,而另一些则存储为字符。如何在所有数据框中应用将日期转换为字符或反之亦然的函数?更好的是,如果我转换所有数据框中的所有日期列。
这是我正在尝试做的一些虚拟代码:
library(tidyverse)
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
startdate.2<-c('2010-11-1','2008-3-25','2007-3-14')
df1<-data.frame(employee,salary, startdate)
df2<-data.frame(employee,salary, startdate.2) %>% rename(startdate=startdate.2)
df3<-bind_rows(df1,df2)
错误:无法合并 ..1$startdate
和 ..2$startdate
。
感谢您的帮助!
以下是使用 purrr
将所有日期列转换为字符列的方法
list(df1, df2) %>%
map(~mutate(.x, across(where(lubridate::is.Date), as.character))) %>%
bind_rows()
或者如果您想将名称中带有“日期”的所有列转换为日期值,您可以这样做
list(df1, df2) %>%
map(~mutate(.x, across(contains("date"), as.Date))) %>%
bind_rows()
我正在尝试绑定许多数据帧。它们都具有相同的列数和相同的列名。 但是,bind_rows 将不起作用,因为某些数据框将特定列存储为日期,而另一些则存储为字符。如何在所有数据框中应用将日期转换为字符或反之亦然的函数?更好的是,如果我转换所有数据框中的所有日期列。 这是我正在尝试做的一些虚拟代码:
library(tidyverse)
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14'))
startdate.2<-c('2010-11-1','2008-3-25','2007-3-14')
df1<-data.frame(employee,salary, startdate)
df2<-data.frame(employee,salary, startdate.2) %>% rename(startdate=startdate.2)
df3<-bind_rows(df1,df2)
错误:无法合并 ..1$startdate
和 ..2$startdate
。
感谢您的帮助!
以下是使用 purrr
list(df1, df2) %>%
map(~mutate(.x, across(where(lubridate::is.Date), as.character))) %>%
bind_rows()
或者如果您想将名称中带有“日期”的所有列转换为日期值,您可以这样做
list(df1, df2) %>%
map(~mutate(.x, across(contains("date"), as.Date))) %>%
bind_rows()