通过R中的循环创建一个新变量

时间:2016-08-26 18:51:30

标签: r loops

这是一个组成的数据集,包括1)黑色大理石的数量2)白色大理石的数量和3)总大理石

white<- c(5, 6,3,5, 9)
black<- c(1, 3,7,5,2)
total<- c(6,9,10,10,11)
data<- data.frame(white, black, total)

如果我想创建一个循环,为perwhite创建两个新变量,即white / total和perblack,它是black / total,我需要做什么?

这是我到目前为止所尝试的内容

variables<- list("white","black")
newnames<- list("perwhite", "perblack")
for (i in 1:2) {
  data$newnames[i]<- data[,variables[[i]]]/data$total
}

我认为当前语法中的问题是当我尝试在数据集中创建新列时。

谢谢!

1 个答案:

答案 0 :(得分:1)

for( i in setdiff( names(data), "total" ) )
    data[paste0( "per", i )] <- data[i] / data["total"]

注意:我会提醒您不要使用data作为变量名,因为它是其中一个内置函数的名称。