【问题标题】:replace true false %in%替换真假%in%
【发布时间】:2018-02-15 10:54:37
【问题描述】:

我有一个数据框,第二列中的数字从 1 到 10:

但还是缺少一些数字 (2,5,7,9)。对于缺少的数字,我想要“NA”。我通过以下代码实现了这一点:

df <- data.frame(group=as.integer(c(1,1,1,2,2,2)), numbers_with_gaps=as.integer(c(1,3,4,6,8,10)))
numbers_with_gaps <- df$numbers_with_gaps
numbers_complete <- c(1:10)

true_false_vector <- numbers_complete %in% numbers_with_gaps
numbers_complete[true_false_vector == FALSE] <- NA

所以最后,这个向量应该有 10 个条目:

我的问题是我想为上面数据框的第一列设置这些“NA”值。不幸的是,将真假向量“应用”到整个数据帧是行不通的。哪个功能对实现我的目标有用?

【问题讨论】:

  • 什么是T_F_vector
  • 对不起我的错误,我更正了。它应该是“true_false_vector”。

标签: r replace boolean


【解决方案1】:

您可以使用tidyversetidyr 使用complete。然后使用group中的NA将它们也设置在numbers_with_gaps中,即

library(tidyverse)

df %>% 
 complete(numbers_with_gaps = seq(10)) %>% 
 mutate(numbers_with_gaps = replace(numbers_with_gaps, is.na(group), NA))

给出,

# A tibble: 10 x 2
   numbers_with_gaps group
               <int> <int>
 1                 1     1
 2                NA    NA
 3                 3     1
 4                 4     1
 5                NA    NA
 6                 6     2
 7                NA    NA
 8                 8     2
 9                NA    NA
10                10     2

【讨论】:

    【解决方案2】:
    df <- data.frame(group=as.integer(c(1,1,1,2,2,2)), numbers_with_gaps=as.integer(c(1,3,4,6,8,10)))
    numbers_with_gaps <- df$numbers_with_gaps
    numbers_complete <- c(1:10)
    
    true_false_vector <- numbers_complete %in% numbers_with_gaps
    
    df[which(true_false_vector == FALSE),] <- NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      相关资源
      最近更新 更多