r - 根据 R 中的子集获取特定行

标签 r dataframe subset

我已经尝试了几个小时了。我有一个包含两列的数据集,我们称它们为 V1 和 V2。我还有一个重要的 V1 值 - Vx 的列表。我设法通过相交函数获取 V1 的子集,因此:

intersect <- intersect(df$V1,Vx)

现在我拼命尝试获取与该子集相对应的 V2 值。 我尝试过

subset <- df[intersect(df$V1,Vx),]

但它返回给我的值都是 NA。 那么用另一个案例来解释一下: 我有一个数据集

V1      V2
a54    hi
bc85   hk
sdx637 hi
vbd435 hk

还有一个列表,包含

l <- c("a54","sdx637")

我想要得到的是:

 V1      V2
 a54    hi
 sdx637 hi

正如我所说,我一直在使用的代码给了我所有 NA,还有其他选择吗?非常感谢。

最佳答案

你可以试试

subset(df, V1 %in% l)
#      V1 V2
#1    a54 hi
#3 sdx637 hi

intersect可用于获取公共(public)元素

 intersect(df$V1, l)
 #[1] "a54"    "sdx637"

但这不会提供逻辑索引来对数据进行子集化,

 df[intersect(df$V1, l),]
 #     V1   V2
 #NA   <NA> <NA>
 #NA.1 <NA> <NA>

但是 %in% 返回一个逻辑索引,这对于取子集很有用。

正如 @Steven Beaupré 在评论中提到的,其他选项包括来自 dplyr[filter

  df[df$V1 %in% l,]

或者

  library(dplyr)
  filter(df, V1 %in% l)

或者

  library(data.table)
  setDT(df)[V1 %chin% l] 

关于r - 根据 R 中的子集获取特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30016991/

相关文章:

在 R 中重构数据

r - term.formula(formula) : '.' in formula and no 'data' argument 中的错误

python - 在 Python (Pandas/Numpy) 中,如何使用条件和特定 block 大小对 df 进行子集化?

r - 根据 R 中另一个 DataFrame 的条件从 DataFrame 中提取值

r - 如何将矩阵子集化为一列,维护矩阵数据类型,维护行/列名称?

r - 使用 RGoogleDocs 时如何防止密码泄露?

r - 基于多个列计算排名,具有优先规则

r - 为什么在将 NA 值附加到带有因子的数据帧时,R 会更改变量类型?

python - 使用 Plotly 散点图绘制未排序的数据框

python - 将标题转换为行