在重复测量数据中,如何选择匹配的案例和控件?

时间:2016-02-20 16:37:20

标签: r subset

我有一组由家庭聚类的数据,研究问题是在不同特征x的同一家族中有2个人具有相同的二元(是/否)结果y。在某些家庭中,y的所有成员都是“是”。在其他家庭中,有些是“是”,有些是“否”。我想只获得具有不一致结果状态的家庭。我猜测代码将是某种条件逻辑语句,但还不能完全弄清楚...在下面的示例数据中,例如,我只想得到2和3的家庭。感谢您的帮助!

#sample data
df <- as.data.frame(cbind(
famid <- c(1,1,2,2,3,3,3),
individ <- c(1,2,3,4,5,6,7),
y <- c(0,0,0,1,0,0,1)))
colnames(df) <- c("famid", "individ", "y")

1 个答案:

答案 0 :(得分:1)

以基地R:

df[ave(df$y, df$famid, FUN = function(x) length(unique(x)) > 1)==1,]

使用

library(data.table)
setDT(df)[, .SD[uniqueN(y)>1], by = famid]
# or:
setDT(df)[, if (uniqueN(y)>1) .SD, by = famid]

使用

library(dplyr)
df %>% group_by(famid) %>% filter(n_distinct(y) > 1)