我需要从类(class)列表中找到“当前”等效类(class)。该列表采用相当简单的格式,来自 SQL 查询,如下所示:
我确定解决方案与递归有关,但我无法理解它。我很高兴发布我尝试过的代码,但如果不在 SQL 中创建多个列(child1、child2 等),我并没有走得太远。
要求的输出应该是这样的:
如有任何帮助,我们将不胜感激!
最佳答案
如果您不想使用 course_title
列,您也可以这样做。
igraph
为每个 parent-child
创建一个单独的集群。values
,用于实际数据的 group_by。parent-child
进行网络分析,我还必须从parent 中删除None
,并在None
为None
时将其替换为child 本身找到了。希望其他语法非常清楚。否则要求解释
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 package 创建于 2021-06-30 (v2.0.0)
https://stackoverflow.com/questions/68189016/
相关文章:
r - 使用ggsave时遇到 "Error: $ operator is invalid for
postgresql - 使用 SymmetricDS 的主动-主动 PostgreSQL 配置
javascript - TypeScript 和文件上传类型
algorithm - 如果一个节点等于二叉搜索树中的父节点,我们将它放在哪一边
flutter - 未处理的异常 : type '_InternalLinkedHashMap
javascript - Js 文件作为 cypress 中的夹具未加载