簡體   English   中英

Function 創建一個表,其中包含 dataframe 中每個日期的最小值和最大值

[英]Function to create a table with min and max of each date in the dataframe

I am new to R and I am trying to create a function that would create a new dataframe showing min and max of each Date´s column from the original dataframe. I have a dataframe (df) with different types of variables (numeric, dates, character...).I would like to create a function that will select only Date columns (Date1,Date2,Date3,Date4, number of columns can vary ...)。並創建一個新的 dataframe 向我顯示每個 Date 列的最小值和最大值(請參閱下面的 output)。

輸入 dataframe df (日期列數可以變化):

Num1     |     Chr1  |     Date1    |    Date2     |  Date3       |

1        |     Name1 |   2012-01-01 |   2018-02-01 |  2015-05-01  |

2        |     Name2 |   2013-01-01 |   2016-02-01 |   2014-05-01 |

3        |     Name3 |   2014-01-01 |   2014-02-01 |   2013-05-01 |

Output dataframe df1:

      |  min_Date1    |  max_Date1   | min_Date2   | max_Date2 |  min_Date3 |  max_Date3 |
      -------------- --------------  ---------- ------------- ------------ -------------
date  |  2012-01-01   |  2014-01-01  | 2014-02-01  | 2018-02-01| 2013-05-01 | 2015-05-01 |

感謝您的建議

可以通過dplyr package 或正則表達式來完成。 我們首先創建示例數據框:

# The data frame
data <- data.frame(
  Num1 = c(1, 2, 3),
  Char1 = c("Name1", "Name2", "Name3"),
  Date1 = as.Date(c("2012-01-01", "2013-01-01", "2014-01-01")),
  Date2 = as.Date(c("2018-02-01", "2016-02-01", "2014-02-01")),
  Date3 = as.Date(c("2015-05-01", "2014-05-01", "2013-05-01"))
)

通過dplyr package

df_max <- dplyr::select(data, dplyr::starts_with("Date")) %>% 
  lapply(max) %>% 
    as.data.frame

df_min <- dplyr::select(data, dplyr::starts_with("Date")) %>% 
  lapply(min) %>% 
    as.data.frame

通過正則表達式

df_max <- as.data.frame(lapply(data[grep("^Date", names(data))], max))
df_min <- as.data.frame(lapply(data[grep("^Date", names(data))], min))

結合兩個數據框

names(df_max) <- paste0("max_", names(df_max))
names(df_min) <- paste0("min_", names(df_min))
df1 <- cbind(df_min, df_max)
df1 <- df1[, c(rbind(names(df_min), names(df_max)))]

暫無
暫無

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

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