r - 从课程列表中查找当前活动条目
问题描述
我需要从课程列表中找到“当前”等效课程。该列表的格式相当简单,来自 SQL 查询,如下所示:
课程代码 | 课程名称 | Course_Status | 家长课程 |
---|---|---|---|
HLT31802 | 标题1a | 被取代 | HLT31807 |
HLT31807 | 标题1b | 被取代 | HLT31812 |
HLT31812 | 标题1c | 被取代 | HLT35015 |
HLT35015 | 标题1d | 被取代 | HLT35021 |
HLT35021 | 标题1e | 当前的 | 没有任何 |
ABC12345 | 标题2a | 被取代 | ABC67890 |
ABC67890 | 标题2b | 当前的 | 没有任何 |
我确信解决方案与递归有关,但我无法理解它。我很高兴发布我尝试过的代码,但如果没有在 SQL 中创建多个列(child1、child2 等),我并没有走得太远。
所需的输出将是这样的:
课程代码 | Current_Course |
---|---|
HLT31802 | HLT35021 |
HLT31807 | HLT35021 |
HLT31812 | HLT35021 |
HLT35015 | HLT35021 |
HLT35021 | HLT35021 |
ABC12345 | ABC67890 |
ABC67890 | ABC67890 |
任何帮助,将不胜感激!
解决方案
如果您不想使用course_title
列,您也可以这样做。
- 用于
igraph
为每个parent-child
. - 此后
values
在我们的案例中使用该集群 ID,用于 group_by 实际数据。 - 为了执行网络分析,
parent-child
我还必须None
从父级中删除并在找到 a 时将其替换为子级本身None
。
希望其他语法很清楚。其他要求解释
df <- read.table(header = T, text = 'Course_Code Course_Title Course_Status Parent_Course
HLT31802 Title1a Superseded HLT31807
HLT31807 Title1b Superseded HLT31812
HLT31812 Title1c Superseded HLT35015
HLT35015 Title1d Superseded HLT35021
HLT35021 Title1e Current None
ABC12345 Title2a Superseded ABC67890
ABC67890 Title2b Current None')
library(tidyverse)
library(igraph)
df %>%
mutate(Parent_Course = ifelse(Parent_Course == 'None', Course_Code, Parent_Course)) %>%
select(1,4) %>%
graph.data.frame() %>%
components() %>%
pluck(membership) %>%
stack() %>%
right_join(df, by = c('ind' = 'Course_Code')) %>%
group_by(values) %>%
mutate(Parent_Course = ind[Course_Status == 'Current'], .keep = 'used') %>%
rename(Course_Code = ind)
#> # A tibble: 7 x 4
#> # Groups: values [2]
#> values Course_Code Course_Status Parent_Course
#> <dbl> <chr> <chr> <chr>
#> 1 1 HLT31802 Superseded HLT35021
#> 2 1 HLT31807 Superseded HLT35021
#> 3 1 HLT31812 Superseded HLT35021
#> 4 1 HLT35015 Superseded HLT35021
#> 5 1 HLT35021 Current HLT35021
#> 6 2 ABC12345 Superseded ABC67890
#> 7 2 ABC67890 Current ABC67890
由reprex 包于 2021-06-30 创建 (v2.0.0 )
推荐阅读
- javascript - Flexslider 下一个和上一个按钮不清晰可见
- python - 张量流中每个通道的全连接层
- java - 验证信用卡号
- javascript - 使用 Laravel 控制器的 AJAX POST 请求调用并从 CSRF 保护中排除,但返回错误 500
- python - 无法从特定页面抓取 main_container
- python - 如何从生成随机字母集的代码中提取真实单词
- ios - 在 Xcode 10.2 中使用 Swift 3 - 命令 /Library/Developer/Toolchains/swift-3.0-RELEASE.xctoolchain/usr/bin/swiftc 失败,退出代码为 1
- mysql - 如何正确总结为“订购时间”+“离开时间” - mysql(添加小时而不是秒)
- reactjs - 无法映射 AsyncStorage 数据
- c# - 如何从应用程序中检测运行时/正在执行的 .NET Framework 版本?