r - 在R中,如何合并两组split函数的结果?

标签 r merge split

我有一个数据框,其中一列有 4 组学生的成绩,另一列有问题的回答。我使用 split 函数创建箱线图,然后测试各组。我只想创建两个组(合并 2 个最低组和 2 个最高组)。 然而,我正在为此苦苦挣扎。 split 函数给出数据帧、矩阵、向量?

    df <- data.frame(
  groups = c("group 1", "group 2", "group 3", "group 4", "group 1", "group 2", "group 3", "group 4"),
  responses = c(1, 4, 5, 9, 3, 4, 6, 9)
)
splittedDF <- split(x = df$responses, f = df$groups)

这给出了这个输出:

      $`group 1`
[1] 1 3
$`group 2`
[1] 4 4
$`group 3`
[1] 5 6
$`group 4`
[1] 9 9

我想合并到这样的东西:

    $`Lowest groups`
[1] 1 3 4 4

$`Highest groups`
[1] 5 6 9 9 

你有什么想法吗?

最佳答案

我们可以先进行排列,然后在进行分割之前创建分组

library(dplyr)
df %>% 
 arrange(responses, groups) %>% 
 mutate(groups = c("Lowest groups", "Highest groups")[gl(n(), 4, n())]) %>%
 {split(.$responses, .$groups)}

-输出

$`Highest groups`
[1] 5 6 9 9

$`Lowest groups`
[1] 1 3 4 4

如果分割列表已经排序,

list(`Lowest groups` = unname(unlist(head(splittedDF, 2))),
    `Highest groups` = unname(unlist(tail(splittedDF, 2))))

-输出

$`Lowest groups`
[1] 1 3 4 4

$`Highest groups`
[1] 5 6 9 9

如果没有排序,则从每个列表元素中获取max值,order

i1 <- order(sapply(splittedDF, max))
splittedDF2 <- splittedDF[i1]
list(`Lowest groups` = unname(unlist(head(splittedDF2, 2))),
    `Highest groups` = unname(unlist(tail(splittedDF2, 2))))

关于r - 在R中,如何合并两组split函数的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73355576/

相关文章:

r - 使用 par 时图例框宽度不正确

git - 什么 git commit 实践更好?

json - 使用 JQ 将一个 JSON 文件值更新为另一个 JSON 文件值(在所有级别)

awk:将 2 个 csv 文件合并为 1 个

python - 按字符拆分列表中的元素

JavaScript - 拆分 window.location.href 返回未定义

R Shiny : Creating a filter function relying on input in a separate file

r - 在 R 中生成和命名变量的动力转换

r - R中的难题:分割数据集的字符串,但保留其他列的信息

r - 计算R中所有列组合的类内系数