我有以下简单的(和工作:)功能,将以前存储在2列(即Year和Month)中的日期信息变成某种'真实'日期格式。有没有更好的方法来访问这些变量而不是附加?
realDate <- function (table,year,period){
if (is.character(table) == TRUE)
{
dframe <- get(table)
}
else{
dframe <- table
}
attach(dframe)
dframe$Date <- as.Date(paste(year,"-",ifelse(period > 9,period,paste("0",period,sep="")),"-01",sep=""))
detach(dframe)
return(dframe$Date)
}
第一个参数是一个data.frame(或it's名称)(我需要与含有多个data.frame名称字符向量lapply使用)。第二个参数是存储年份的df列,期间是存储月份的那个列。
我只是在学习这个整体环境的东西,而且我确实认为这种附加/分离方式不是正确的方法(即使它有效)。有没有更好的方法将指定参数“Year”和“Period”作为粘贴语句的一部分?
编辑:
将参数作为列名传递的正确方法是什么?请注意,Year和Period的姓名可能会从data.frame更改为data.frame。如果我使用你建议的功能我得到:
head(realDate(mydf,"Jahr","Periode")) # German for year and period
Error in charToDate(x) :
character string is not in a standard unambiguous format
or
Error in paste(year, "-", ifelse(period > 9, period, paste("0", period, :
object 'Jahr' not found
HTH帮助。
一些示例数据会很有用。我不明白的是,你以“年”和“时期”作为论点。这些与'dframe'有什么关系 - 即为什么要附加?在'dframe' /'table'中有一个名为“year2”和“period”的列,在这种情况下,您不需要将它们作为参数传递,只需使用'with()'或'within()'。 – 2010-11-04 11:23:28
我之所以把年份和期限作为参数,是因为标签在我的情况下发生了变化,我必须使用的数据库在Year中使用不同的标签,有时它是英文标签,有时是瑞士/德国标签。真的很有道理,但我必须处理它。我发布的功能只是我必须做的几项重新整理数据中的一项。 – 2010-11-04 11:31:52