在 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]], ...) 中的错误:无效的下标类型'closure'

我试着做一个循环:

result2 <- for (i in 1:seq_along(year_list)) {transform_date2}

这导致:警告消息:在 1:seq_along(year_list) 中:数值表达式有 2 个元素:仅第一个使用

我觉得我在访问嵌套表的正确“级别”时遇到问题。

我的最终目标是保留当前格式(嵌套表),删除每个嵌套表中的日、月、年列,在每个表中创建日期列并保留 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}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章