2016-11-04 37 views

回答

1

一個選項是data.table。將'data.frame'轉換爲'data.table'(setDT(df)),按'index'分組,if'amount'的數量爲uniquesign大於1,則獲取Data.table的子集(.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

i1 <- with(df, as.logical(ave(sign(amount), index, FUN = function(x) length(unique(x))>1))) 
df[i1,] 
+1

感謝您的快速回復。這對我很有用 –

+0

@TomK感謝您的反饋。你也可以勾選[here](http://stackoverflow.com/help/someone-answers) – akrun

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 
相關問題