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
我正在尝试查看每个唯一 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