在R中动态创建列

时间:2014-01-13 19:29:32

标签: r loops dataframe

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

示例简化数据集是:

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 个答案:

答案 0 :(得分:1)

这可能是你需要的

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