R中的交叉表图

A plot for cross tabulations in R

我正在尝试查看每个唯一 childid 是否仅出现在一个唯一 schoolid 中。我画了交叉表,但是视觉很乱,看不清楚。

有没有更好的方法(通过绘图或其他方式)在 R 中实现我的目标?

(ps。作为替代方案,我还被告知要拟合混合模型并绘制随机效应,但如下图所示,图像非常小且不清楚。)

dd <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/3.csv')
cross_tab <- xtabs(~ schoolid + childid, dd)

plot(cross_tab)

library(lme4)

m31 <- lmer(math~year+(1|schoolid/childid), data = dd)

image(getME(m31,"Zt"))

这样就可以了(无剧情)

使用 Base R。您可以计算偶然性 table,然后计算每个 childid 有多少次 schoolid+chilid 匹配为正值。如果它大于 1,那么您就有了想要的洞察力。

x <- colSums(table(dd$schoolid, dd$childid) > 0) 
x[x>1]
#> named numeric(0)

dplyr。你 distinct 每个 schoolid+childid 匹配,然后如果 childid 出现不止一次,你就数。

library(dplyr)

dd %>% distinct(schoolid, childid) %>% count(childid) %>% filter(n>1)
#> [1] childid n      
#> <0 rows> (or 0-length row.names)

检查每个 studentid 的唯一 schoolid 的大小。

dd %>% group_by(childid) %>% summarize(ns_per_id = length(unique(schoolid))) %>% 
summarise(unique(ns_per_id))
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 1 x 1
  `unique(ns_per_id)`
         <int>
1            1