假设我有如下数据框
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没有row.names
,因此我不知道该怎么做。
我的问题是,按照键的顺序,给定一系列键的小标题中查找值的“最聪明”方式(或惯用的方式,是从Python借用术语)?
答案 0 :(得分:1)
使用data.frame完成此操作的非行名方法是
df[match(c('b', 'd', 'c'), df$y), 'x']
这也适用于小标题。或者,使用dplyr
动词:
df %>% slice(match(c('b', 'd', 'c'), y)) %>% pull(x)
答案 1 :(得分:1)
我会使用过滤器
library(tidyverse)
df <- tibble(
x = 1:5,
y = c("a","b","c","d","e")
)
df %>%
filter(y %in% c("b","d","c"))
#> # A tibble: 3 x 2
#> x y
#> <int> <chr>
#> 1 2 b
#> 2 3 c
#> 3 4 d
由reprex package(v0.2.0.9000)于2018-07-12创建。