这是一个非常简单的要求,但我不能把我的头绕在这上面。我已经创建了一个标志变量(0,1),我希望将一列的值替换为另一列的值,即if flag==1。
下面是一个可重复的示例和我的错误代码:
if_else(q46$flag==1,q46$name==q46$positions,q46$name==q46$name)
set.seed(123)
q46 <- data.frame(flag=sample(0:1,100,replace=T),
name=sample(c('Bob','Susan','Susan','Amy','Elliot'),100, replace=T),
positions=sample(c('President','Agronomist','Preacher'),100,replace=T))发布于 2017-09-07 15:58:06
您也可以尝试以下操作,而且,在创建data.frame if_else(q46$flag==1,q46$positions,q46$name)时,您的代码应该运行良好,只需添加if_else(q46$flag==1,q46$positions,q46$name)即可
q46$name[q46$flag==1]=q46$positions[q46$flag==1]数据
q46 <- data.frame(flag=sample(0:1,100,replace=T),
name=sample(c('Bob','Susan','Susan','Amy','Elliot'),100, replace=T),
positions=sample(c('President','Agronomist','Preacher'),100,replace=T),stringsAsFactors = F)发布于 2017-09-07 15:51:21
set.seed(123)
q46 <- data.frame(flag=sample(0:1,100,replace=T),
name=sample(c('Bob','Susan','Susan','Amy','Elliot'),100, replace=T),
positions=sample(c('President','Agronomist','Preacher'),100,replace=T))
q46$name = with(q46, ifelse(flag, as.character(positions), as.character(name)))您需要将ifelse的输出分配给q46$name来替换它。as.character转换基于这样的假设,即positions和name列是因素(如果在创建data.frame时不添加stringsAsFactors=FALSE,它们将自动转换为因素)。
结果:
> head(q46, 10)
flag name positions
1 0 Susan President
2 1 Preacher Preacher
3 0 Susan Agronomist
4 1 Agronomist Agronomist
5 1 Agronomist Agronomist
6 0 Elliot Preacher
7 1 Agronomist Agronomist
8 1 President President
9 1 President President
10 0 Bob Presidenthttps://stackoverflow.com/questions/46100517
复制相似问题