我有一个数据集,我希望能够动态创建列,包括它们的名称。
示例简化数据集是:
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")
}
我也知道如何动态定义新列的值,但似乎无法弄清楚如何将新列名从列表中获取到数据帧。
答案 0 :(得分:1)
这可能是你需要的
l <- lapply(dataset[,3:5], "/", dataset$signups)
names(l) <- paste(names(dataset[,3:5]), "percentage", sep = "_")
dataset <- cbind(dataset,l)