循环遍历列,每组4列生成R中的新变量

时间:2013-10-01 17:07:00

标签: r function loops

我在R中有一个数据集,结构如下

Headers:
ClientID Geo Industry RevBiz1_09 RevBiz1_10 RevBiz1_11 RevBiz1_12 RevBiz2_09 RevBiz2_10 RevBiz2_11 RevBiz2_12...

我想要做的是在R中编写一个以第4列开头并遍历每组4列的函数,计算CAGR并为相应的Biz生成一个具有该值的新列。我正在做的事情是弄清楚如何编写循环。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我没有运行它,但这应该让你知道该怎么做。但是,我仍然建议您为其他可能会在稍后的问题中受益的人发布示例。

编辑 - 假设以“_12”结尾的列仅用于需要计算CAGR的数量。

   library(data.table)
   # Getting the list of column names for which CAGR needs to be calculated
   Instances = gsub(
      colnames(dataset)[
         grepl(colnames(dataset), pattern = "_12")
         ], 
      pattern = "_12", 
      replacement = ""
   )

   for ( i in Instances )
   {
      #calculating CAGR for each i
      #dataset is a data.table and not a data.frame
      dataset[, 
         paste0("CAGR",i):= (get(paste0(i,"_12")) / get(paste0(i,"_09")) ^ 1/4) - 1
      ]

   }