这可能是一个简单的问题,但我仍然需要一些帮助使用R.
我有一个data.frame(main_data),让我们说..
NAMES AGE LOC
Jyo 23 Hyd
Abid 27 Kar
Ras 24 Pun
Poo 25 Goa
Sus 28 Kar
Run Code Online (Sandbox Code Playgroud)
我希望根据名称列表删除几行.所以我可以说我有另一个表列表如下:
NAMES_list
Jyo
Ras
Poo
Run Code Online (Sandbox Code Playgroud)
所以基于这个列表,如果任何名称与我上面的"main_data"表匹配,那么我想删除它们的整行,所以结果应该如下
NAMES AGE LOC
Abid 27 Kar
Sus 28 Kar
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?提前致谢.. :)
如果我想选择data.table中使用二进制搜索在键变量中不包含特定值的所有行,会发生什么?顺便问一下,我想做什么的正确行话是什么?它是"nojoin"吗?这是"消极选择"吗?
DT = data.table(x=rep(c("a","b","c"),each=3), y=c(1,3,6), v=1:9)
setkey(DT,x)
Run Code Online (Sandbox Code Playgroud)
让我们对x =="a"但使用二进制搜索的所有行进行正选择
DT["a"]
Run Code Online (Sandbox Code Playgroud)
这很美,但我希望与此相反.我想要所有不是"a"的行,换句话说x!="a"
DT[x!="a"]
Run Code Online (Sandbox Code Playgroud)
那是矢量扫描.以上线路工作但使用矢量扫描.我想用二进制文件.我期待以下工作,但唉......
DT[!"a"]
DT[-"a"]
Run Code Online (Sandbox Code Playgroud)
以上两个不起作用,尝试与无匹配发挥让我无处可去.
您如何使用数字范围对data.table进行子集化,以便使用二进制搜索?
例如:
require(data.table)
set.seed(1)
x<-runif(10000000,min=0,max=10)
y<-runif(10000000,min=0,max=10)
DF<-data.frame(x,y)
DT<-data.table(x,y)
system.time(DFsub<-DF[DF$x>5 & DF$y<7,])
# user system elapsed
# 1.529 0.250 1.821
#subset DT
system.time(DTsub<-DT[x>5 & y<7])
# user system elapsed
#0.716 0.119 0.841
Run Code Online (Sandbox Code Playgroud)
以上不使用键(矢量扫描),加速不是那么戏剧化.使用二进制搜索对data.table的数值范围进行子集化的语法是什么?我在文档中找不到一个好例子; 如果有人可以使用上面的玩具数据提供一个例子,将会有所帮助.
编辑:这个问题是类似的,但仍然没有演示如何按范围子集: data.table:矢量扫描v二进制搜索与数字列 - 超慢setkey