首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据条件替换行?

问如何根据条件替换行?
EN

Stack Overflow用户
提问于 2017-09-07 15:47:01
回答 2查看 57关注 0票数 1

这是一个非常简单的要求,但我不能把我的头绕在这上面。我已经创建了一个标志变量(0,1),我希望将一列的值替换为另一列的值,即if flag==1。

下面是一个可重复的示例和我的错误代码:

代码语言:javascript
复制
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))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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)即可

代码语言:javascript
复制
q46$name[q46$flag==1]=q46$positions[q46$flag==1]

数据

代码语言:javascript
复制
 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)
票数 2
EN

Stack Overflow用户

发布于 2017-09-07 15:51:21

代码语言:javascript
复制
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,它们将自动转换为因素)。

结果:

代码语言:javascript
复制
> 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  President
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46100517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档