r - tidyverse 在给定一系列键的情况下在数据框中查找值的方法
问题描述
假设我有一个如下数据框
df=data.frame(x=1:5,y=c("a","b","c","d","e"))
y
关键列在哪里。有时我想查找x
对应于y
. 为了做到这一点,我可以
row.names(df)=df$y
df[c("b","d","c"),c("x")]
我会得到
[1] 2 4 3
请注意,返回值的顺序与一系列给定键的顺序相同。
现在我想使用 tidyverse 的 tibble 来实现同样的目标。但是由于 tibble 没有row.names
,我不知道该怎么做。
我的问题是,在给定一系列键的情况下,按照键的顺序在 tibble 中查找值的“最聪明”的方式(或惯用的方式,从 Python 中借用一个术语)是什么?
解决方案
使用 data.frame 执行此操作的非行名方式是
df[match(c('b', 'd', 'c'), df$y), 'x']
这也适用于小标题。或者,使用dplyr
动词:
df %>% slice(match(c('b', 'd', 'c'), y)) %>% pull(x)
推荐阅读
- jquery - 带有数字的 Jquery AZ 过滤器
- django - Django REST 图像上传和用户配置文件
- binary-tree - 广度优先搜索遍历 VS 预序遍历 VS 深度优先搜索遍历
- dart - Dart,嵌套类,如何访问子类变量
- ios - 我应该转移 AVPlayer 还是 AVPlayerItem?
- safari - Angular 6 应用程序无法在 Safari 浏览器中运行
- google-sheets - 在 IMPORTRANGE 中使用行号
- java - Jenkins - 将 JDK 11 添加到 JDK 列表
- python - 为熊猫数据框中的每一行组合多列
- angular - 单击时如何动态更新css id的值和活动的广告类