r - 在R中的嵌套表中从带有日、月、年的单独列创建日期
问题描述
我正在处理嵌套表中的水文数据。除了流(Q)之外,我将日期分为 3 列(一列表示天,第二列表示月,第三列表示年)。
year_2008 <- list("910" = data.frame(Year = c(2008), Day=c(1:5), Month= c(1, 1, 1, 1 ,1)),
"950" = data.frame(Year = c(2008), Day=c(1:5), Month= c(1, 1, 1, 1 ,1)),
"1012" = data.frame(Year = c(2008), Day=c(1:5), Month= c(1, 1, 1, 1 ,1)),
"1087" = data.frame(Year = c(2008), Day=c(1:5), Month= c(1, 1, 1, 1 ,1)))
year_2009 <- list("910" = data.frame(Year = c(2009), Day=c(1:5), Month= c(1, 1, 1, 1 ,1)),
"950" = data.frame(Year = c(2009), Day=c(1:5), Month= c(1, 1, 1, 1 ,1)),
"1012" = data.frame(Year = c(2009), Day=c(1:5), Month= c(1, 1, 1, 1 ,1)),
"1087" = data.frame(Year = c(2009), Day=c(1:5), Month= c(1, 1, 1, 1 ,1)))
这是一个嵌套表。
year_list <- list (year_2008, year_2009)
names(year_list) <- c("2008", "2009")
我正在尝试将这 3 列中的信息收集到一个单独的列中,该列将显示一个日期(在一个名为“日期”的新列中)。我创建了一个函数来创建日期列:
transform_date2 <- function(x) {x$date <- as.Date(with(x, paste(x$Day, x$Month, x$Year, sep="-")), "%d-%m-%Y")}
我尝试将该函数应用于嵌套表:
result1 <- lapply(year_list, `[[`, transform_date2)
这会导致错误: FUN(X[[i]], ...) 中的错误:无效的下标类型“闭包”
我试着做一个循环:
result2 <- for (i in 1:seq_along(year_list)) {transform_date2}
这将导致:警告消息:在 1:seq_along(year_list) 中:数值表达式有 2 个元素:仅使用第一个元素
我觉得我在访问嵌套表的正确“级别”时遇到问题。
我的最终目标是保持当前格式(嵌套表),删除每个嵌套表中的 Day、Month、Year 列,在每个嵌套表中创建日期列并保留 Q 列。请帮忙
解决方案
因为它是一个嵌套列表,所以使用嵌套lapply
:
year_list <- lapply(year_list, function(x) lapply(x, transform_date2))
哪里transform_date2
是:
transform_date2 <- function(x) {x$date <- as.Date(with(x, paste(x$Day, x$Month, x$Year, sep="-")), "%d-%m-%Y");x}
推荐阅读
- jenkins-pipeline - 如何检查管道参数是否为空
- regex - 从文件名中删除版本后缀
- javascript - 当用户锁定 ios 设备时,如何知道我的网站是隐藏的?
- android - 准备中的 IllegalStateExceptioncom.swmansion.gesturehandler.GestureHandler
- machine-learning - 选择什么机器学习模型?
- arrays - Swift:获取多维数组第一叶的简单方法
- xamarin.forms - 用于 QR 扫描的 zxing 库的 NullPointerException(Android 应用 Xamarin Froms)
- android - MaterialAlertDialogBuilder 在自定义视图 editText 上崩溃
- php - WooCommerce:仅在结帐时显示大于 1 的产品数量
- python - 在 lambda 中找不到自制的 Python 包