R选择数据帧中的所有行,其中一个值在一列中重复,但在另一列中有一个特定值
我试图从我的R数据帧中提取一列中有重复值但另一列中有0或1的行 例如,如果这是数据帧:R选择数据帧中的所有行,其中一个值在一列中重复,但在另一列中有一个特定值,r,dataframe,dplyr,duplicates,subset,R,Dataframe,Dplyr,Duplicates,Subset,我试图从我的R数据帧中提取一列中有重复值但另一列中有0或1的行 例如,如果这是数据帧: Data <- data.frame( + X = c(1,3,5,7,7,8,9,10,10,11,11), + Y = sample(36476545:36476555), + timepoint = c(0,1,0,0,1,1,0,1,0,1,1) + ) 我想要的输出将是所有行,这些行的值在X中重复,其中一次出现的值的时间点=0,另一次出现的值的时间点=1,从而导致 >
Data <- data.frame(
+ X = c(1,3,5,7,7,8,9,10,10,11,11),
+ Y = sample(36476545:36476555),
+ timepoint = c(0,1,0,0,1,1,0,1,0,1,1)
+ )
我想要的输出将是所有行,这些行的值在X中重复,其中一次出现的值的时间点=0,另一次出现的值的时间点=1,从而导致
> Data
X Y timepoint
4 7 36476547 0
5 7 36476546 1
8 10 36476555 1
9 10 36476553 0
请注意,最后两项数据(也在X中重复)不计算在内,因为在这两种情况下,时间点变量均为1。
有一个很接近,但我不知道如何在R代码
我尝试的解决方案是,首先创建一个重复的数据帧,然后尝试从中获取我想要的数据帧:
dupes <- Data[Data$X %in%
Data$X[duplicated(Data$X)],]
ids <- Data$X[Data$timepoint==0]
Data[Data$X %in% ids,]
duppes这就是你想要的吗
库(dplyr)
数据%
分组依据(X)%>%
过滤器(dplyr::n_distinct(时间点)==2)
n_distinct
返回向量中不同元素的数量。由于GROUPBY语句,每个组(X)只返回具有两个不同时间点的行
dplyr::n_distinct(c(1,2,1,3,1))
数据%>%
分组依据(X)%>%
变异(n_distinct=dplyr::n_distinct(时间点))
在每个子dfrm中使用拆分和测试0和1的存在。谢谢,它可以工作!为了让我明白这是如何工作的,你能解释一下这段代码在做什么吗?
dupes <- Data[Data$X %in%
Data$X[duplicated(Data$X)],]
ids <- Data$X[Data$timepoint==0]
Data[Data$X %in% ids,]