繁体   English   中英

如何将 function 应用于 R 中的数据帧列表?

[英]How can I apply a function to a list of dataframes in R?

我正在尝试绑定许多数据框。 它们都具有相同的列数和相同的列名。 但是,bind_rows 不起作用,因为某些数据帧将特定列存储为日期,而另一些则存储为字符。 如何在所有数据框中应用将日期转换为字符或反之亦然的 function? 如果我转换所有数据框中的所有日期列,那就更好了。 这是我正在尝试做的一些虚拟代码:

    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()

暂无
暂无

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

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