Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.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_Dataframe_Dplyr_Duplicates_Subset - Fatal编程技术网

R选择数据帧中的所有行,其中一个值在一列中重复,但在另一列中有一个特定值

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,从而导致 >

我试图从我的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
    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,]