【问题标题】:Making a List out of a Column in R从R中的列制作列表
【发布时间】:2021-11-29 13:19:54
【问题描述】:

我正在尝试从我的 DataFrame 的某个列中列出一个列表。

但它应该依赖于另一列,如果它应该被添加到列表中。

例如,如果数据框是:

names <- c('Word1','Word2','Word3')
quant <- c(5, NA, 10)

my.data <- data.frame(names, quant)

现在我只想列出带有数量的单词并省略带有“NA”的单词。 有没有一种聪明而快速的方法来做到这一点? 这种情况下最终的List应该是(Word1, Word3)

非常感谢您的帮助。我是 R 的初学者,我唯一的解决方案是循环遍历 dataFrame 并检查每个值。

【问题讨论】:

  • na.omit(my.data)$names ?

标签: r dataframe data-manipulation


【解决方案1】:

或者可以使用 subsetis.na 并否定 (!)

 subset(my.data, !is.na(quant))
  names quant
1 Word1     5
3 Word3    10

【讨论】:

    【解决方案2】:

    我们可以使用complete.casesna.omit 删除所有 NA 的。使用complete.cases,我们可以部分选择列。参见my.data[complete.cases(my.data[1,1]),]my.data[complete.cases(my.data[1:2,2]),]

    my.data[complete.cases(my.data),]
    
      names quant
    1 Word1     5
    3 Word3    10
    

    而且速度更快:

    library(microbenchmark)
    
    microbenchmark(
      na.omit(my.data)$names,
      my.data[complete.cases(my.data),]
    )
    
    Unit: microseconds
                                   expr min    lq   mean median   uq   max neval cld
                 na.omit(my.data)$names  46 46.95 50.457  47.60 49.4  90.9   100   b
     my.data[complete.cases(my.data), ]  22 22.80 25.522  23.65 24.3 133.5   100  a 
    

    【讨论】:

      【解决方案3】:

      这是你要找的吗?

      na.omit(my.data)
      
        names quant
      1 Word1     5
      3 Word3    10
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-09
        • 1970-01-01
        • 2017-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-13
        • 1970-01-01
        相关资源
        最近更新 更多