在重复测量数据中,如何对 select 个匹配的病例和对照进行子集化?
In repeated measures data, how to subset to select matched cases and controls?
我有一组按家庭聚类的数据,研究问题是同一家庭中具有不同特征 x 的 2 个人是否具有相同的二进制 (yes/no) 结果 y。在一些家庭中,所有成员都是 "yes" for y。在其他家庭中,有些是 "yes",有些是 "no" for 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")
基数 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]
与dplyr:
library(dplyr)
df %>% group_by(famid) %>% filter(n_distinct(y) > 1)
我有一组按家庭聚类的数据,研究问题是同一家庭中具有不同特征 x 的 2 个人是否具有相同的二进制 (yes/no) 结果 y。在一些家庭中,所有成员都是 "yes" for y。在其他家庭中,有些是 "yes",有些是 "no" for 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")
基数 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]
与dplyr:
library(dplyr)
df %>% group_by(famid) %>% filter(n_distinct(y) > 1)