R 如何选择索引列中重复出现给定值的行?
我试图选择重复出现R 如何选择索引列中重复出现给定值的行?,r,R,我试图选择重复出现index的行,并且仅当金额数据改变符号时 > df index amount 1 a 1 2 b 2 3 b 3 4 c 1 5 c -1 鉴于上述简单的df。我希望返回的df只有第4行和第5行 过滤的简单方法是什么?一个选项是数据表。将“data.frame”转换为“data.table”(setDT(df)),按“index”分组,如果“amount”的unique号大于
index
的行,并且仅当金额数据改变符号时
> df
index amount
1 a 1
2 b 2
3 b 3
4 c 1
5 c -1
鉴于上述简单的df。我希望返回的df只有第4行和第5行
过滤的简单方法是什么?一个选项是
数据表。将“data.frame”转换为“data.table”(setDT(df)
),按“index”分组,如果“amount”的unique
号大于1,则获取data.table的子集(.SD
)
base R
选项将与ave
i1 <- with(df, as.logical(ave(sign(amount), index, FUN = function(x) length(unique(x))>1)))
df[i1,]
i1])
df[i1,]
只需使用dplyr添加另一个选项即可:
库(dplyr)
df%>%
分组依据(指数)%>%
过滤器(长度(唯一(符号(数量)))>1)
#>来源:本地数据帧[2 x 2]
#>分组:索引[1]
#>
#>指数量
#>
#>1 c 1
#>2 c-1
感谢您的快速回复。这对我很管用
i1 <- with(df, as.logical(ave(sign(amount), index, FUN = function(x) length(unique(x))>1)))
df[i1,]