如何在索引列中选择重复出现给定值的行?

时间:2016-11-04 10:45:35

标签: r

我正在尝试选择重复出现index的行,并且仅在数量数据更改符号时才会选择。

> df
   index amount
1     a      1
2     b      2
3     b      3
4     c      1
5     c     -1

鉴于上面简单的df。我希望返回的df只有第4行和第5行。

什么是简单的过滤方式?

2 个答案:

答案 0 :(得分:1)

一个选项是 echo $form->field($model, 'user_id[]', [ ])->widget(Select2::classname(), [ 'data' => $user_data, 'value' => [1, 2], // Initial values, can also check with these value as string["1","2"], . . 。转换' data.frame'到' data.table' (data.table),按'索引'分组,setDT(df)&{39}的数量为if unique的数量'大于1,然后获取Data.table的子集(sign

.SD

library(data.table) setDT(df)[, if(uniqueN(sign(amount))>1) .SD , by = index] # index amount #1: c 1 #2: c -1 选项将与base R

一起使用
ave

答案 1 :(得分:1)

只需添加dplyr的另一个选项:

library(dplyr)
df %>% 
  group_by(index) %>%
  filter(length(unique(sign(amount))) > 1) 
#> Source: local data frame [2 x 2]
#> Groups: index [1]
#> 
#>   index amount
#>   <chr>  <int>
#> 1     c      1
#> 2     c     -1