使用函数处理data.frame

时间:2016-05-26 19:59:22

标签: r function data-manipulation

我有以下数据框:

#if defined(_VCL_ALIAS_RECORDS)
#if !defined(UNICODE)
#pragma alias "@System@Messaging@TMessageManager@SendMessageA$qqrxp14System@TObjectp25System@Messaging@TMessage"="@System@Messaging@TMessageManager@SendMessage$qqrxp14System@TObjectp25System@Messaging@TMessage"
#pragma alias "@System@Messaging@TMessageManager@SendMessageA$qqrxp14System@TObjectp25System@Messaging@TMessageo"="@System@Messaging@TMessageManager@SendMessage$qqrxp14System@TObjectp25System@Messaging@TMessageo"
#else
#pragma alias "@System@Messaging@TMessageManager@SendMessageW$qqrxp14System@TObjectp25System@Messaging@TMessage"="@System@Messaging@TMessageManager@SendMessage$qqrxp14System@TObjectp25System@Messaging@TMessage"
#pragma alias "@System@Messaging@TMessageManager@SendMessageW$qqrxp14System@TObjectp25System@Messaging@TMessageo"="@System@Messaging@TMessageManager@SendMessage$qqrxp14System@TObjectp25System@Messaging@TMessageo"
#endif
#endif

并且想要创建一个执行以下操作的函数:

DF2 <- data.frame(column = c("C1", "C2", "C3", "C4", "C5"), 
              start = c(2005,2001,2006,2005,2009), 
              end = c(2012,2009,2011,2010,2012), 
              stringsAsFactors = F)

所以我可以致电:

year.calcs <- function(x) {
          pre.5 <- x$start - 5
          pre.1 <- x$start - 1
          post.5 <- x$end + 5
          post.1 <- x$end + 1
}

并将所有新列添加到数据框中。

1 个答案:

答案 0 :(得分:0)

这是另一种方法:

year.calcs <- function(x) {
  x[["pre.5"]] <- x$start - 5
  x[["pre.1"]] <- x$start - 1
  x[["post.5"]] <- x$end + 5
  x[["post.1"]] <- x$end + 1

  x
}

df <- year.calcs(x=DF2)

返回

> df
  column start  end pre.5 pre.1 post.5 post.1
1     C1  2005 2012  2000  2004   2017   2013
2     C2  2001 2009  1996  2000   2014   2010
3     C3  2006 2011  2001  2005   2016   2012
4     C4  2005 2010  2000  2004   2015   2011
5     C5  2009 2012  2004  2008   2017   2013