如何从数据框子集提取最左侧行号并转为向量?
提取数据框子集的行号并转为向量
嘿,这个需求在R里很容易实现,给你两种常用方法:
基础R方法:直接提取子集的行名,再转换为数值向量
# 分步实现 subset_rows <- samp[V3 == "D", ] row_numbers <- as.numeric(rownames(subset_rows))也可以一行搞定:
row_numbers <- as.numeric(rownames(samp[V3 == "D", ]))解释下:
rownames()会返回子集对应的原始行号(注意返回的是字符类型),用as.numeric()转成数值型后,就得到你要的c(2, 3, 4)向量了。tidyverse风格方法(适合习惯dplyr的用户):
先把行名转为显性列,筛选后提取即可:library(dplyr) row_numbers <- samp %>% rownames_to_column(var = "row_id") %>% # 把行号转成名为row_id的列 filter(V3 == "D") %>% # 筛选V3为D的行 pull(row_id) %>% # 提取row_id列 as.numeric() # 转为数值向量
如果你的数据框是tibble(默认不显示行名)也不用担心,rownames()依然能获取到原始行号,两种方法都适用。
内容的提问来源于stack exchange,提问作者zest16
相关产品推荐
相关产品推荐

