Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何选择索引列中重复出现给定值的行?_R - Fatal编程技术网

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,]