r - R,从分组数据框中提取列作为向量
问题描述
想象一下你有这个数据框
x <- c("a1", "a2", "a3", "a4", "a1", "a2", "a3", "a4")
y <- c("red", "yellow", "blue", "green", "black", "pink", "purple",
"orange")
df <- data.frame(x, y, stringsAsFactors = FALSE)
我想不出一种方法,最好使用 dplyr,在对数据框进行分组后提取 y 列。本质上,我想知道 a1、a2、a3 和 a4 中的颜色,并将这些结果存储为单独的向量,最好是在列表中。
我可以做
colors.in.a1 <- df %>% filter(x == "a1") %>% pull(y)
对于 a1、a2、a3、a4 中的每一个,但我的真实数据需要一段时间。我希望它的pull()
行为类似于tally()
,可能会返回一个基于分组变量命名的向量列表,但事实并非如此。
解决方案
仅使用 Base R(感谢@thelatemail 的评论):
split(df$y, df$x)
或者我们可以使用nest
:
library(tidyverse)
df %>%
group_by(x) %>%
nest() %>%
mutate(data = data %>% map(pull, y)) %>%
pull(data) %>%
setNames(unique(x))
结果:
$a1
[1] "red" "black"
$a2
[1] "yellow" "pink"
$a3
[1] "blue" "purple"
$a4
[1] "green" "orange"
推荐阅读
- python - 删除文本文件中的ip地址并用python中的随机ip地址替换
- python-3.x - 如何使用 python3 asyncio 来做 async io?
- laravel - 如何使用 Nativescript (Vue) 在本地开发环境中进行 Axios 调用?
- sql-server - SQL Server 2016 中的“类未注册”SQL Server 2005 错误?
- jquery - “sideTip”插件的 Tooltipster 初始化错误
- arrays - Vlookup 不适用于多种条件
- sql - 从oracle sql中的任何月份开始删除字符串
- html - 消除样式表的渲染阻塞资源
- algorithm - 可爱的幸运羔羊最后一个测试用例没有通过
- flutter - 颤振如何在后按时执行功能