【发布时间】:2015-01-01 02:01:59
【问题描述】:
我想对数据框进行子集化,以包含具有 >1 条记录的主题的所有记录,并排除只有 1 条记录的主题。
让我们采用以下数据框;
mydata <- data.frame(subject_id = factor(c(1,2,3,4,4,5,5,6,6,7,8,9,9,9,10)),
variable = rnorm(15))
下面的代码使用 duplicated() 为我提供了 >1 条记录的主题;
duplicates <- mydata[duplicated(mydata$subject_id),]$subject_id
但我想在我的子集中为每个具有>1条记录的主题保留所有记录,所以我尝试了;
mydata[mydata$subject_id==as.factor(duplicates),]
这不会返回我期望的结果。
有什么想法吗?
【问题讨论】:
-
您不需要(也不应该)使用
as.data.frame(cbind(... ))之类的东西。只需使用data.frame(var1 = ..., var2 = ...)(请参阅我对您问题的编辑)。这样,您还可以避免在全局环境中创建许多对象,例如 subject_id 和变量,尽管您只希望它们在 data.frame 中。
标签: r dataframe duplicates subset