根据R中的子集获取特定行
我已经试了好几个小时了。我有一个包含两列的数据集,我们称它们为V1和V2。我还有一个重要V1值列表-Vx。我用intersect函数获取了V1的子集,因此:根据R中的子集获取特定行,r,dataframe,subset,R,Dataframe,Subset,我已经试了好几个小时了。我有一个包含两列的数据集,我们称它们为V1和V2。我还有一个重要V1值列表-Vx。我用intersect函数获取了V1的子集,因此: intersect <- intersect(df$V1,Vx) 还有一个列表,包含 l <- c("a54","sdx637") 正如我所说,我一直使用的代码为我提供了所有NAs,是否有其他选择?非常感谢。你可以试试 subset(df, V1 %in% l) # V1 V2 #1 a54 hi #3 sd
intersect <- intersect(df$V1,Vx)
还有一个列表,包含
l <- c("a54","sdx637")
正如我所说,我一直使用的代码为我提供了所有NAs,是否有其他选择?非常感谢。你可以试试
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>
或
或
谢谢你,这似乎有效。不过还有一件事。你认为我的l是300个元素长,但得到的子集更长,这背后的原因是什么?是否有重复项?@sdgawerzswer该列将有重复项。您可以检查
any(表(df$V1)>1)
以查看是否有多个元素
subset(df, V1 %in% l)
# V1 V2
#1 a54 hi
#3 sdx637 hi
intersect(df$V1, l)
#[1] "a54" "sdx637"
df[intersect(df$V1, l),]
# V1 V2
#NA <NA> <NA>
#NA.1 <NA> <NA>
df[df$V1 %in% l,]
library(dplyr)
filter(df, V1 %in% l)
library(data.table)
setDT(df)[V1 %chin% l]