我希望能够在数据框中创建新列,其值将由预定义的条件语句列表确定。这样做的最终目标是得到一个表二进制值,表示每个实例是否满足条件。它可能看起来像一个笨重或奇怪的输出,但它是我试图建立的经济模型的要求(重复销售模型)。
这是一个简化的可重复的例子:
df <- data.frame(a=c(1,2,3,4,5),b=c(0.3,0.2,0.5,0.3,0.7))
conditions <- data.frame(y=df$b>=0.5, z=df$b>=0.7)
columns <- c("y","z")
for(i in length(columns)){
df[, paste("var_",columns[i],sep="")] <- ifelse(conditions[i],1,0)
}
所以在这个例子中,我想得到“var_y”和“var_z”列,这些列的二进制值表示是否满足条件y或z的条件。
现在,我收到了这个错误:
ifelse错误(conditions [i],1,0):( list)对象不能 强迫输入'逻辑'
我不明白,因为数据框“条件”中的所有信息都属于“逻辑”类型。
答案 0 :(得分:1)
我们可以做到
df[paste0("var_", seq_along(columns))] <- +(conditions)
df
# a b var_1 var_2
#1 1 0.3 0 0
#2 2 0.2 0 0
#3 3 0.5 1 0
#4 4 0.3 0 0
#5 5 0.7 1 1