如何在R中的另一列中仅子集具有多个不同值的行?
我有一个类似于下面的数据集:如何在R中的另一列中仅子集具有多个不同值的行?,r,dplyr,subset,R,Dplyr,Subset,我有一个类似于下面的数据集: 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
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)
zz我们可以使用filter
和n\u 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
或使用base R
i1 <- rowSums(!!table(Data))
subset(Data, Session %in% names(i1)[i1 >1])
i1])
我们可以使用过滤器与n\u不同
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
或使用base R
i1 <- rowSums(!!table(Data))
subset(Data, Session %in% names(i1)[i1 >1])
i1])
。。。或者使用ave()和subscripting(假设Rater是一个因子,这是读取字符数据时的默认值)
。。。或者使用ave()和subscripting(假设Rater是一个因子,这是读取字符数据时的默认值)
从本质上讲,这是一个相反的重复,因为你所要改变的是==
到
,但有些事情也从这些答案开始了。从本质上讲,这是一个相反的重复,因为你所要改变的是==
到
,但有些事情也偏离了这些答案。
Data[with(Data,ave(unclass(Rater),Session,
FUN = function(x)length(unique(x)))) > 1,]