gpt4 book ai didi

arrays - R在列中搜索信息

转载 作者:行者123 更新时间:2023-12-02 06:14:20 25 4
gpt4 key购买 nike

我有两张 table 。具有如下所示的格式。其中之一是表 A:

students|Test Score
A | 100
B | 81
C | 92
D | 88

我的另一个表 B 看起来像这样:

Class | Students
1 | {A,D}
2 | {B,C}

我想在 R 中执行某种操作,我可以从表 A 中搜索表 B 列下的数组中列出的学生,并将分数制成以下格式:

    Class | Students | Mean Score
1 | {A,D} | 94
2 | {B,C} | 86.5

是否有任何公式可用于进行搜索,然后通过在 R 中进行一些操作来合并这些结果?

最佳答案

使用基础 R 的简单方法:

df2$mean_score <- sapply(df2$Students, function(x, df) {
students_vec <- unlist( strsplit(gsub("[{}]","", x), split=",") )
mean(df[which( df$students %in% students_vec ), "Test Score"] )
}, df = df1)

df2
# Class Students mean_score
#1 1 {A,D} 94.0
#2 2 {B,C} 86.5

我们对 df2 中的学生列进行应用,并创建一个包含我们想要的学生的向量。然后我们将 df1 子集给那些学生并取平均值。请注意,这是假设您的 df2$Students 数据以字符串形式出现。

数据:

df1 <- structure(list(students = c("A", "B", "C", "D"), `Test Score` = c(100L, 
81L, 92L, 88L)), .Names = c("students", "Test Score"), row.names = c(NA,
-4L), class = "data.frame")

df2 <- structure(list(Class = 1:2, Students = c("{A,D}", "{B,C}")), .Names = c("Class",
"Students"), row.names = c(NA, -2L), class = "data.frame")

关于arrays - R在列中搜索信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43459824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com