r - 我想获取数据框中所有行的行号,其中列中的元素包含向量中的元素

标签 r dataframe

我有一个看起来像这样的字符向量

Categories = sample(make.unique(rep(letters, length.out = 5), sep=''))
Categories
[1] "d-" "e-" "c-" "a-" "b-"

我有一个数据框 df,它看起来像:

df = data.frame(name = c(1:10), cat = paste(c(letters[1:10]), "-1", sep = ""))
df
    name cat
1     1   a-1
2     2   b-1
3     3   c-1
4     4   d-1
5     5   e-1
6     6   f-1
7     7   g-1
8     8   h-1
9     9   i-1
10   10   j-1

我想按照类别元素在 df 中“cat”列中包含的顺序获取 df 中的行号。所以,我想得到

dfRowNumbers
[1] 4,5,3,1,2

我怎样才能得到它?

最佳答案

最直接的方法是,您可以使用 charmatch

charmatch(vec, df$cat)
[1] 4 5 3 1 2

或使用 grepsapply 返回命名向量。

sapply(Categories, grep, df$cat, fixed=TRUE)
d- e- c- a- b- 
 4  5  3  1  2 

对于一点语义糖,使用 Vectorize 构建您自己的函数:

vecGrep <- Vectorize(grep, vectorize.args="pattern")

然后用它返回一个命名向量

vecGrep(Categories, df$cat, fixed=TRUE)
d- e- c- a- b- 
 4  5  3  1  2

数据

vec <- c("d-", "e-", "c-", "a-", "b-")
df = data.frame(name = c(1:10), cat = paste(c(letters[1:10]), "-1", sep = ""))

关于r - 我想获取数据框中所有行的行号,其中列中的元素包含向量中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074885/

相关文章:

r - 这些数据集之间使用 R 进行深度学习的 MAE 结果存在差异的原因是什么?

python - 在 Pandas 中查找类型为 float 或特定类型的所有数据框列?

r - 根据 R 中的前一行值在序列中分配值

python - 如何获取多索引数据框前两个索引的字典

python - 如何将字符串映射到数据框python3的每一列中的数字ID

java - 在 h2o 中加载大于内存大小的数据

r - 使用 dplyr 汇总并统计分组 df 中唯一值的数量

r - 为 `facet_wrap`中的每一列创建边框和标题

r - 根据r中的列名从列表中提取数据框

python - 在 python 中搜索所有数据集值