如何在R的另一列中仅对具有多个不同值的行进行子集化?

剥头皮

我有一个类似于下面的数据集:

zz <-  "Session    Rater     
1          A         X          
2          A         X     
3          A         X   
4          B         Y   
5          B         Y     
6          B         Z   
7          B         Z         
8          C         X   
9          C         Y    
10         C         Z"

Data <- read.table(text=zz, header = TRUE)

我只想对会话具有多个评估者的会话行进行子集化,即使该数据存储在另一列中也是如此。因此,我想得到一个看起来像这样的数据集:

zz2 <-  "Session    Rater     
1          B         Y
2          B         Y
3          B         Z
4          B         Z
5          C         X
6          C         Y
7          C         Z"

Data2 <- read.table(text=zz2, header = TRUE)

由于会话A仅具有一个评估者“ X”而从数据集中删除了会话A的行,但由于会话B和C(以及它们的所有行)具有多个评估者(会话B的Y和Z,以及会话C的X,Y和Z)。

我玩过dplyr,但没有成功。非常感谢。

阿克伦

我们可以使用filtern_distinct

library(dplyr)
Data %>%
    group_by(Session) %>% 
    filter(n_distinct(Rater)>1)
#  Session  Rater
#   <fctr> <fctr>
#1       B      Y
#2       B      Y
#3       B      Z
#4       B      Z
#5       C      X
#6       C      Y
#7       C      Z

或使用 data.table

library(data.table)
setDT(Data)[, if(uniqueN(Rater)>1)  .SD, by = Session]

或搭配 base R

i1 <- rowSums(!!table(Data))
subset(Data, Session %in% names(i1)[i1 >1])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不删除/删除其他重复行的情况下对 1 列中具有重复值的行和另一列中具有不同值的行进行分组?

如何在一列中对不同的行进行分组?

如何查找在另一列的不同行中具有多个值的列值的总长度

如何查找另一列的不同行中具有多个值的列值的总长度BY LOCATION

如何在R的一列中添加具有不同值的新行

改进对在另一列中具有特定值的不同值进行计数的查询

根据具有多个记录的表中另一列的不同值添加值

对与数据框中的另一列相对应的两列中的所有值进行子集化

如何在一个列中查找具有相同值但在另一列中具有不同值的记录

如何对R中相同的两列具有不同值的数据框进行子集

删除r中另一列中具有相同ID但值不同的行

在 R 中,指示另一列的每个 ID 是否具有多个唯一值

如何在同一列上找到具有多个不同值的结果?

如何在具有不同行的一列上插入多个值?

如何在一列中获取具有最小值的行,并按另一列进行分组,同时保留其他列?

如何将一列中的行值与组中另一列中的所有其他行进行比较?

如何根据行中的特定值和熊猫中的另一列对行进行分组?

R:如果另一列具有不同的值,如何使用aggregate()函数对某一列的数据求和?

在R中的另一列中保留具有不同值的行

如何从R中的两个不同数据帧中添加两列,其中一列只是另一列的唯一值的子集

使用 case_when() 和 filter() 根据 R 中一列中的值和另一列中的级别对数据框进行子集化

如何在具有各自位置的列中插入另一列值?

如何在数据框的列上使用R的diff函数,条件是在另一列中具有特定值

如何选择具有在一列中重复但在另一列中具有不同值的列值的行?

MySQL 查询一列中具有相同值而另一列中具有不同值的行

选择在一列中具有相同值而在另一列中具有不同值的行

删除一列中具有重复值但另一列中具有不同值的行

如果一列的值出现在另一列中,则对行进行分组

如何在另一列中获取具有特定值的对应列?