我的数据(df)包含每行代表不同学校的数据。每所学校都有自己的 ID 号、未通过数学GCSE 的学生人数、通过的人数以及参加GCSE 的人数。
例如学校用
学校ID | 失败 | 通过 | 总计 | 城市 | %FSM |
---|---|---|---|---|---|
1 | 12 | 43 | 55 | N | 23 |
我想用这些数据做两件事:
我相信要做到这一点,我需要有效地将学校水平的数据转化为学生水平的数据。所以现在有 55 行 ID 为 1,还有一个新的 pass 列,其中 12 行表示“N”,43 行表示“Y”。
如何使用 R 来实现这个新数据集?我有大约 3200 行(即目前唯一的学校 ID,因此需要能够为所有学校自动执行此操作的代码)。
你可以使用
uncount
:
library(tidyverse)
df %>%
pivot_longer(cols = c(pass, fail)) %>%
uncount(value)