如果我有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,我可以做到,但有没有办法避免这一步?)
答案 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)