相关疑难解决方法(0)

如何使用R?基于外部列表从data.frame中删除行?

这可能是一个简单的问题,但我仍然需要一些帮助使用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)

任何人都可以帮我解决这个问题吗?提前致谢.. :)

r dataframe

25
推荐指数
3
解决办法
3万
查看次数

如何在data.table中进行否定/无匹配/反向搜索?

如果我想选择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)

以上两个不起作用,尝试与无匹配发挥让我无处可去.

select r data.table

20
推荐指数
1
解决办法
6409
查看次数

使用二进制搜索按范围子集data.table

您如何使用数字范围对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

r data.table

16
推荐指数
1
解决办法
2622
查看次数

标签 统计

r ×3

data.table ×2

dataframe ×1

select ×1