- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个只有两列的新数据表,并使用这两列作为键将它与另一个表连接起来。我可以这样做:
a.dt <- data.table(x = 1:3, y = 2:4)
setkey(a.dt,x,y)
key(a.dt)
# [1] "x" "y"
# ...(join)
但我不想使用 setkey
- 我想立即链接到连接中,即在创建表后我想 keyby
两个新变量。出于我不清楚的原因,我收到此错误:
a.dt <- data.table(x = 1:3, y = 2:4)[, .SD, keyby = .(x,y)]
# Error in jsub[[ii]] : attempt to select less than one element
这是我丑陋的解决方法
a.dt <- data.table(x = 1:3, y = 2:4, z = 3:5)[, .SD, keyby = .(x,y)][,z := NULL]
key(a.dt)
# [1] "x" "y"
有人可以解释为什么我不能 keyby
这两个变量吗?我在做一些根本上很愚蠢的事情吗?
编辑:为了完整性添加 session 信息
sessionInfo()
# R version 3.2.1 (2015-06-18)
# Platform: x86_64-w64-mingw32/x64 (64-bit)
# Running under: Windows 8 x64 (build 9200)
# locale:
# [1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
# [4] LC_NUMERIC=C LC_TIME=English_United States.1252
# attached base packages:
# [1] stats graphics grDevices utils datasets methods base
# other attached packages:
# [1] data.table_1.9.4 plyr_1.8.2 foreign_0.8-63
# loaded via a namespace (and not attached):
# [1] magrittr_1.5 tools_3.2.1 reshape2_1.4.1 Rcpp_0.12.0 stringi_0.4-1 stringr_1.0.0 chron_2.3-45
最佳答案
您可以在创建 data.table 时使用 key
参数进行键入:
require(data.table) #v1.9.6
DT2 = data.table(x=3:4, y=4:5, w=5:6)
DT1 = data.table(x=1:3, y=2:4, z=7:9, key=c("x", "y"))[DT2]
或者,从 v1.9.6
开始,您可以使用 on=
参数来指定应该执行连接的列。
DT2 = data.table(a=3:4, b=4:5, w=5:6)
DT1 = data.table(x=1:3, y=2:4, z=7:9)[DT2, on=c(x="a", y="b")]
另一种方法是在 list 上使用 setDT()
以及 key
参数。
DT2 = data.table(a=3:4, b=4:5, w=5:6)
DT1 = setDT(list(x=1:3, y=2:4, z=7:9), key=c("x", "y"))[DT2]
dt[, .SD, keyby=.(x, y)]
为我返回一个空 data.table(它应该如此)。不确定您使用的是哪个版本的 data.table。这是因为 .SD
默认情况下会分配所有列,by=
中提到的列除外。由于有两列,并且您已将这两列都提供给分组依据,因此 .SD
为空。因此返回一个空的 data.table。如果你真的想要这种行为,你需要显式设置 .SDcols
如下:
dt[, .SD, keyby=.(x, y), .SDcols=c("x", "y")]
# or from v1.9.6 we can also do
dt[, .SD, keyby=.(x, y), .SDcols=x:y]
但请注意,这将返回 x,y
两次。
关于链接时R data.table keyby多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32954874/
1.概述 转载并且补充: flink keyby 分布不均匀问题 我使用随机数random.nextint(8)作为key,生成keyedstream之后,直接sink到存储中,但是sink算子只有四
我有一个对象数组,我想将它转换为以 id 为键的键值对映射。但是,我想在根级别和 recipes 属性中执行此操作。 数组resp: [ { "id": "1", "recipes
我有一个数组,我想将其转换为一个对象。例如: const arr = [{id: 1, key: ''}, {id: 2, key: ''}]; 我想要的结果是: const object = { 1
是否有使用 lodash 实现此目的的简单方法? _.something([{a: 3, b: 4}, {a: 3, b: 5}, {a: 10}], 'a') => { 3: [ {a: 3, b:
在 Java Spark 中,我可以使用 keyBy() 或 mapToPair() 为 JavaRDD 创建一些键。使用 keyBy() 使我的意图更加清晰,并使用更少代码的参数函数(该函数返回一个
我正在使用 Laravel Collections 方法,并试图通过 id 来键入我的查询结果(这是一个集合)。问题是我有多个具有相同 ID 的条目,但指向不同的国家,我想拥有所有的值,而不仅仅是最后
我想通过以下方式修改关系的结果集 我有这个数组 array:11 [▼ "id" => 1 "user_id" => 1 "name" => "Test Case
我正在开发一个项目,使用 Laravel 设置后端 RESTful API,使用 angularJS 设置前端。 我从我的 Controller @index 返回简单 all()->toArray(
进入 Flink job 的数据可能会因为代码中的错误或缺乏验证而触发异常。我的目标是提供一致的异常处理方式,我们的团队可以在 Flink 作业中使用这些方式,而不会导致生产中断。 重启策略似乎不适用
我创建了一个命令,并尝试查询我的数据库并按键对结果进行分组,但我不断收到此错误: In Builder.php line 2512: Method Illuminate\Database\Quer
这是我想在 Apache Flink 中执行的操作: 输入DataStream然后按字段键 x然后做一个每分钟滑动一次的 15 分钟窗口,聚合每个键的结果 ( x ),然后将所有这些聚合聚合到一个列表
我正在使用 Flink 1.4.2,我有一个场景需要使用两个键。 例如 KeyedStream keyedStream = stream.keyBy("clusterId", "ssid"); usa
我正在尝试通过尽可能避免洗牌来优化我的 Spark 工作。 我正在使用 cassandraTable 创建 RDD。 列族的列名是动态的,因此定义如下: CREATE TABLE "Profile"
例如,假设我的数组中有一些用户对象: [{name: "Bob", ID: "123", location: "Texas"}, {name: "Jill", ID: "124", location
说我有这个数据集 test test[, X, keyby = .(X)] X X 1: 1 1 > test[, Y == "a", keyby = .(X)] X V1 1: 1
我是一名优秀的程序员,十分优秀!