根据 R 中的子集获取特定行
Getting specific rows according to a subset in R
我已经为此尝试了几个小时。我有一个包含两列的数据集,我们称它们为 V1,V2.I 也有一个重要的 V1 值列表 - Vx。我设法获得了具有相交功能的 V1 子集,所以:
intersect <- intersect(df$V1,Vx)
现在我正在拼命地尝试获取与该子集对应的 V2 值。
我试过
subset <- df[intersect(df$V1,Vx),]
但它 returns 我的值,都是 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
可以用来获取公共元素
intersect(df$V1, l)
#[1] "a54" "sdx637"
但这不会为数据子集提供逻辑索引,
df[intersect(df$V1, l),]
# V1 V2
#NA <NA> <NA>
#NA.1 <NA> <NA>
但是 %in%
returns 一个逻辑索引,这对子集化很有用。
正如@Steven Beaupré 在评论中提到的,其他选项包括来自 dplyr
的 [
或 filter
df[df$V1 %in% l,]
或
library(dplyr)
filter(df, V1 %in% l)
或
library(data.table)
setDT(df)[V1 %chin% l]
我已经为此尝试了几个小时。我有一个包含两列的数据集,我们称它们为 V1,V2.I 也有一个重要的 V1 值列表 - Vx。我设法获得了具有相交功能的 V1 子集,所以:
intersect <- intersect(df$V1,Vx)
现在我正在拼命地尝试获取与该子集对应的 V2 值。 我试过
subset <- df[intersect(df$V1,Vx),]
但它 returns 我的值,都是 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
可以用来获取公共元素
intersect(df$V1, l)
#[1] "a54" "sdx637"
但这不会为数据子集提供逻辑索引,
df[intersect(df$V1, l),]
# V1 V2
#NA <NA> <NA>
#NA.1 <NA> <NA>
但是 %in%
returns 一个逻辑索引,这对子集化很有用。
正如@Steven Beaupré 在评论中提到的,其他选项包括来自 dplyr
[
或 filter
df[df$V1 %in% l,]
或
library(dplyr)
filter(df, V1 %in% l)
或
library(data.table)
setDT(df)[V1 %chin% l]