重复代码,需要帮助创建一个函数,在数据框中格式化和创建新列
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)
我有一些包含日期的不同数据框,需要创建和格式化数据。 步骤 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)