簡體   English   中英

R 返回數據幀列表的最大和最小日期

[英]R to return max and min dates for list of dataframes

我使用以下代碼獲取 3 個不同數據幀的“日期”列的最大和最小日期。 我的控制台中沒有收到任何 output? 我做對了嗎,還是我需要創建一個單獨的 function 並使用 lapply?

df2 <- list(daily_activity,
+             hourly_activity,
+             sleep_day)
> for (i in 1:length(df2)){
+   max_date <- max(df2[[i]]$date)
+   min_date <- min(df2[[i]]$date)
+   return(c(max_date,min_date))
+ }

我們可以在list使用lapply

lapply(df2, function(x) c(max(x$date, na.rm = TRUE), 
      min(x$date, na.rm = TRUE)))

1)在最后使用注釋中的可重現輸入,這給出了一個小標題,其第一行是最小值,第二行是最大值。

library(purrr)

map_df(L, ~ range(.$date))
## # A tibble: 2 × 3
##   a          b          c         
##   <date>     <date>     <date>    
## 1 1970-01-01 1970-01-01 1970-01-01
## 2 1970-01-04 1970-01-04 1970-01-04

2)如果您想專門使用for修復問題中的代碼,則遍歷名稱並使用cat顯示 output。

for (nm in names(L)) {
   d <- L[[nm]]$date
   max_date <- max(d)
   min_date <- min(d)
   cat(nm, format(max_date), format(min_date), "\n")
}
## a 1970-01-04 1970-01-01 
## b 1970-01-04 1970-01-01 
## c 1970-01-04 1970-01-01 

或更短:

for (nm in names(L)) cat(nm, format(range(L[[nm]]$date)), "\n")

筆記

DF <- data.frame(date = .Date(0:3), v = 0:3)
L <- list(a = DF, b = DF, c = DF)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM