【问题标题】:How do I assign unique instances as multiple keys to a dictionary in R?如何将唯一实例作为多个键分配给 R 中的字典?
【发布时间】:2022-10-18 04:33:51
【问题描述】:

我有一个 R df,其中一列,赋值,如下所示:

course instance assignment
1 1 A
1 1 B
1 2 B
1 2 C
2 1 A
2 1 C
2 2 B
2 2 A

我需要为跨实例的课程中的所有作业创建一个超集(因为没有更好的术语)。

例如:课程 1 提供了 2 次课程,在实例 1 中包含作业 A 和 B,在实例 2 中包含作业 B 和 C。本课程的作业超集应每次包含作业 A、B 和 C .换句话说,在课程实例中至少出现一次的每个作业都应该在超集中出现一次。

更新:我已经尝试了下面的建议。

library(tidyverse); df %>% group_by(course) %>% 
summarise(all_assignments = toString(sort(unique(assignment))), 
.groups = "drop")

这将返回以下内容:

all_assignments .groups
A drop

我现在已经在以下示例数据集上对此进行了测试:

df <- read.table(text = "course instance    assignment
1   1   A
1   1   B
1   2   B
1   2   C
2   1   A
2   1   C
2   2   B
2   2   A", header = T)

它返回一个类似的结构:

all_assignments .groups
A, B, C drop

显然这个确切的代码对其他人有用,所以我想知道我做错了什么?

【问题讨论】:

  • 您能否包括您的预期输出。这将帮助我们了解您的需求。例如,library(tidyverse); df %&gt;% group_by(course) %&gt;% summarise(all_assignments = toString(sort(unique(assignment))), .groups = "drop") 为每个 course 返回所有 instances 的逗号分隔字符串。这就是你所追求的吗?
  • 是的,这是基本思想。我尝试了您的建议并使用单行的输出更新了问题。我确定这是我遗漏的一个小错误。
  • 请参阅下面的完全可重现的示例。确保您的实际数据与您的样本数据相匹配,例如列名完全相同(R 区分大小写)。

标签: r dictionary key unique instance


【解决方案1】:

我对您的预期输出并不完全清楚(请参阅我上面的评论);请看以下

library(dplyr)
df %>% 
    group_by(course) %>% 
    summarise(
        all_assignments = toString(sort(unique(assignment))), 
        .groups = "drop")
## A tibble: 2 × 2
#  course all_assignments
#   <int> <chr>          
#1      1 A, B, C        
#2      2 A, B, C       

这是在R_4.2.0dplyr_1.0.9 上测试和验证的。


样本数据

df <- read.table(text = "course instance    assignment
1   1   A
1   1   B
1   2   B
1   2   C
2   1   A
2   1   C
2   2   B
2   2   A", header = T)

【讨论】:

  • 奇怪的是,我得到了样本数据的类似输出,其中作业被分组,但没有链接到课程(即列标题是“all_assignments”,第一个单元格显示“A、B、C”,而第二列是“.groups”,行单元格写着“drop”)。我会多玩一点。您的样本输出是什么样的?
  • @briahnah对不起,但我不知道你的意思“作业被分组,但未链接到课程”.以上对于包含的示例数据(根据您的主要帖子)具有可重复性。应该没有.groups 列。第一步是通过复制和粘贴我的答案中的数据和代码来验证您的身份。如果您的实际数据不同,请提供有代表性的示例数据,否则很难帮助和调试。
猜你喜欢
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多