r - 变量计数和跟踪变化
问题描述
我有一份学生名单,我需要看看他们中有多少人被转到不同的大学。
第一个条目代表学生的“家庭学校”,如果大学条目在所有学期都保持不变,则学生没有转学。如果其中一个学期的大学不同,那么学生确实转学了。我希望将 Transfer 设置为二分变量 (0,1)。
这是我的试验数据。
Semester <-c(1,2,3,4,5,1,2,3,4,1,2,3,4,5,1,2,3,1,2,1,2,1,2,3,4,5,1,2,3,4,5,6,1,2,3,4,1,2,3,4)
Student <- rep(c("A","B","C","D","E","F","G","H","I","J"),c(5,4,5,3,2,2,5,6,4,4))
College <- rep(c("ATC","CCTC","DTC","FDTC","GTC","HGTC","MTC","NETC"),c(5,6,4,5,6,4,5,5))
test.dat1 <- cbind(Semester,Student, College)
我需要制作一个如下所示的表格:-
非常感谢您的帮助!
解决方案
每个group_by
学生,然后将家庭学校视为该学生的第一所大学。
转学列将是家庭学校和新学校是否不同的数字逻辑结果。
编辑:如果有多所大学就读,新学校是第一所与家庭学校不同的学校。
library(tidyverse)
test.dat1 %>%
as.data.frame() %>%
group_by(Student) %>%
summarise(Home_School = first(College),
New_School = if_else(n_distinct(College) > 1, first(College[College != first(College)]), Home_School),
Transfer = +(Home_School != New_School))
输出
# A tibble: 10 x 4
Student Home_School New_School Transfer
<fct> <fct> <fct> <int>
1 A ATC ATC 0
2 B CCTC CCTC 0
3 C CCTC DTC 1
4 D DTC FDTC 1
5 E FDTC FDTC 0
6 F FDTC GTC 1
7 G GTC GTC 0
8 H HGTC MTC 1
9 I MTC NETC 1
10 J NETC NETC 0
推荐阅读
- querydsl - QueryDsl 中的 IF 函数
- javascript - 按索引将元素添加到空数组的时间复杂度是多少?
- javascript - 使用 Alpine JS 切换元素与类?
- swift - 避免在应用启动时一遍又一遍地从 Firestore 获取相同的数据
- html - CSS 网格行问题
- ios - GitHub CocoaPods 与 CocoaPod Repository Pods 冲突
- r - 在 Highcharter 中向黑白柱形图添加图案填充
- c++ - LNK2019 错误,即使所有文件都添加到项目中
- powershell - 通过快捷键或命令行/shell 从 Windows 桌面运行 Power Automate 流
- typescript - 在 vue typescript 的 *.d.ts 文件中添加的命名空间在没有显式导入的情况下无法识别