这是一个组成的数据集,包括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
}
我认为当前语法中的问题是当我尝试在数据集中创建新列时。
谢谢!
答案 0 :(得分:1)
for( i in setdiff( names(data), "total" ) )
data[paste0( "per", i )] <- data[i] / data["total"]
注意:我会提醒您不要使用data
作为变量名,因为它是其中一个内置函数的名称。