有条件地从data.frame中删除重复项
我正在试图找出如何根据变量有条件地从data.frame中删除重复项,r,dataframe,subset,R,Dataframe,Subset,我正在试图找出如何根据变量s的重复值对我的数据集进行子集划分,同时还要考虑与行关联的id 假设我的数据集是: dat <- read.table(text = " id s 1 2 1 2 1 1 1 3 1 3 1 3
s
的重复值对我的数据集进行子集划分,同时还要考虑与行关联的id
假设我的数据集是:
dat <- read.table(text = "
id s
1 2
1 2
1 1
1 3
1 3
1 3
2 3
2 3
3 2
3 2",
header=TRUE)
我已经尝试过使用duplicated()
和which()
来使用subset()
,但我哪儿也不去。主要问题是隔离s=3
“块”的第一行是不够的,因为在某些情况下(如id=1
和id=2
之间),3在一个id和另一个id之间重叠。。您会采取哪种策略?如下:
subset(dat, s != 3 | s == 3 & !duplicated(dat))
# id s
# 1 1 2
# 2 1 2
# 3 1 1
# 4 1 3
# 7 2 3
# 9 3 2
# 10 3 2
请注意,使用子集
可能会有危险(请参阅),因此较长但更安全的版本为:
id s
1 2
1 2
1 1
1 3
2 3
3 2
3 2
dat[dat$s != 3 | dat$s == 3 & !duplicated(dat), ]
谢谢!同样对于链接对不起,我不知道,我必须查看您的数据。id=1(其中s=2)和id=3(其中s=2)中也有重复项,您想保留这些还是删除它们?是的,我想保留它们,谢谢