首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据数据框中的不同列用值填充列

根据数据框中的不同列用值填充列
EN

Stack Overflow用户
提问于 2018-06-02 04:07:29
回答 1查看 633关注 0票数 0

我有两列,a和b(列的长度约为85,000)。B是空的,a是用各种值填充的。如果值在列表c中,则需要用"Yes“填充b。如果值在列表d中,则需要用"No“填充b。如果它们都不在列表中,那么b可以留空或用NA填充(实际上无关紧要)。现在,我有一个带有if、if else和else语句的for循环。虽然这是有效的,但它并不快(大约需要20秒)。有没有什么方法可以用向量运算来加速呢?提前感谢!

代码语言:javascript
复制
for (i in 1:length(a)){
    if(is.element(df$a[i],c) == TRUE){
      df$b[i] <- "Yes"
    }
    else if (is.element(df$a[i],d) == TRUE){
      df$b[i] <- "No"
    }
    else{
      df$b[i] <- NA
    }
  }
EN

回答 1

Stack Overflow用户

发布于 2018-06-02 04:51:43

如果你创建两个独立的向量,其中一个索引a在c中,另一个在索引中a在d中。

代码语言:javascript
复制
in.c <- which(df$a %in% df$c)
in.d <- which(df$a %in% df$d)

然后,您可以根据这些向量更新b

代码语言:javascript
复制
df$b[in.c] <- 'Yes'
df$b[in.d] <- 'No'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50650376

复制
相关文章

相似问题

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