我有一个类似于下面的数据集:
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
,但没有成功。非常感谢。
我们可以使用filter
与n_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] 删除。
我来说两句