在R中使用ifelse语句和forloops创建新变量

时间:2019-04-18 21:11:48

标签: r loops for-loop

我需要为数据框中的变量的每个唯一唯一分类值创建一个虚拟变量。

我想知道是否可以将unique(data$variable)变成一个向量,然后创建一个forloop,为每个值分配一个新变量。像

for(val in vector){

data$print(val)<- ifelse(data$variable == val, 1, 0)}

当我尝试出现此错误时:

  

复杂分配中的无效功能

将代码更改为 对于(向量中的val){

data$print[val]<- ifelse(data$variable == val, 1, 0)}`

产生错误

  

$<-.data.frame*tmp*中的错误,打印,值= c(1,1,1,1,1,1,1,   :替换有480437行,数据有480436

data $ variable也已经是因素

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

正确的代码是

`for(value in vector) { 
  nam <- paste(value)
  assign(nam, ifelse(data$variable == value, "1", "0"))
 data<-cbind(data, get(value))
}`

其中assign为每个ifelse语句的结果创建对象,然后cbind将它们连接到数据框