我已经尝试了几个小时了。我有一个包含两列的数据集,我们称它们为 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/