2014-01-13 85 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)