R - 拆分数据帧而不删除NA值

时间:2017-06-22 23:04:36

标签: r dataframe split na

如果我有df:

letter    body_part
    a     head
    b     head
    c     NA
    d     NA
    e     left_foot

我想将它分成2个dfs ...一个只有body_part - “head”而另一个只有其他一切。即。

  

list< - split(df,df $ body_part =='head')

我可以在不删除NA行的情况下执行此操作吗? (我知道如果我用字符串填充NA,我可以做到,但有没有办法避免这一步?)

3 个答案:

答案 0 :(得分:5)

来自?`%in%`

  

'%in%'永远不会返回'NA'使它特别有用        '如果'条件。

# just to show how the `==` comparison compares  
> df$s_col <- df$body_part == 'head'

> split(df, df$body_part %in% 'head')
$`FALSE`
  letter body_part s_col
3      c      <NA>    NA
4      d      <NA>    NA
5      e left_foot FALSE

$`TRUE`
  letter body_part s_col
1      a      head  TRUE
2      b      head  TRUE

答案 1 :(得分:0)

> ind <- df$body_part == 'head'
> ind[is.na(ind)] <- FALSE
> split(df, ind)
$`FALSE`
# A tibble: 3 x 2
  letter body_part
   <chr>     <chr>
1      c      <NA>
2      d      <NA>
3      e left_foot

$`TRUE`
# A tibble: 2 x 2
  letter body_part
   <chr>     <chr>
1      a      head
2      b      head

答案 2 :(得分:0)

您可以将f的{​​{1}}参数转换为因式,而不用排除split()的值。

NA

reprex package(v0.3.0)于2019-10-14创建