2014-01-13 54 views
0

我有一个数据集,我希望能够动态创建列,包括他们的名字。动态创建R列

一个例子的简化数据集是:

dataset <- data.frame(data = c(0,1,2,3), 
         signups = c(100, 150, 200, 210), 
         leads = c(10, 12, 15, 18), 
         opportunities = c(2, 4, 5, 3), 
         closed = c(1,4,2,1)) 

我想用于该数据集的以下附加字段,其定义为这样:

lead_percentage <- dataset$leads/dataset$signups 
opportunity_percentage <- dataset$opportunities/dataset$signups 
closed_percentage <- dataset$closed/dataset$signups 

我有许多列发生这种情况,并无法弄清楚如何循环才能做到这一点。

到目前为止,我知道我可以创建使用此代码的列名的列表:

colnames_list <- 0 
c <- 1 
for(c in c(4:ncol(dataset)-1)) { 
    colnames_list[c] = paste(colnames(dataset)[c], "percentage") 
} 

我也知道如何动态地定义新列的值,但似乎无法人物了解如何将新列名从列表中获取到数据框中。

回答

1

这可能你需要什么

l <- lapply(dataset[,3:5], "/", dataset$signups) 
names(l) <- paste(names(dataset[,3:5]), "percentage", sep = "_") 
dataset <- cbind(dataset,l)