重复代码,需要帮助创建一个函数,在数据框中格式化和创建新列

Repeated code, need help creating a function formating and creating new columns in dataframe

我有一些包含日期的不同数据框,需要创建和格式化数据。 步骤 1. 将 dataframe$date 转换为日期。第 2 步和第 3 步。创建包含周和年的新列。第 4 步和第 5 步将周和年转换为数字。 由于我需要多次执行此操作,因此我想从中创建一个函数。

dataframe$date <- as.Date(dataframe$date, "%Y-%m-%d")
dataframe$week <- strftime(dataframe$date, format = "%V")
dataframe$year <- strftime(dataframe$date, format = "%Y")
dataframe$week <- as.numeric(dataframe$week,as.numeric)
dataframe$year <- as.numeric(dataframe$year,as.numeric)

我的尝试:

format.dataframe <- function(a) {

  paste(a, $date, sep="") <- as.Date(paste(a, $date, sep=""), "%Y-%m-%d")
  paste(a, $week, sep="") <- strftime(paste(a, $date, sep=""), format = "%V")
  paste(a, $year, sep="") <- strftime(paste(a, $date, sep=""), format = "%Y")
}

所以 a 应该是我要格式化的数据框的名称。

您可以在基数 R 中使用 transform :

format.dataframe <- function(a) {
  transform(a, date = as.Date(date, "%Y-%m-%d"), 
               week = as.numeric(strftime(date, format = "%V")),
               year = as.numeric(strftime(date, format = "%Y")))
}

a <- format.dataframe(a)

dplyr 中的 mutate :

library(dplyr)

format.dataframe <- function(a) {
  a %>%
    mutate(date = as.Date(date, "%Y-%m-%d"), 
           week = as.numeric(strftime(date, format = "%V")),
           year = as.numeric(strftime(date, format = "%Y")))
}

a <- format.dataframe(a)