当前位置: 首页 > 知识库问答 >
问题:

R:选择数据表中的特定行

袁致远
2023-03-14

我有一个在data.table中选择行的特定问题,到目前为止还没有设法解决它。我有一个数据集,用于存储一系列参数的仿真结果。数据集中的列包含参数或结果值,请参阅下面的代码(“p”表示参数列,“v”表示值列。

# create dataset for demonstration
params <- expand.grid (seq(0,0.5,by=.1),
                       seq(1,10),
                       seq(100,105),
                       letters[1:4],
                       letters[10:14])
colnames(params) <- paste("p",1:5,sep="")
data <- data.table(cbind(params,runif(nrow(params)),rnorm(nrow(params))))
setnames(data, c(colnames(params),"v1","v2"))

我现在想提取:对于每个p1,对于给定的p2和p3值,对于p4,p5的任意值,v1的值是最小的行。设 np4 和 np5 是 p4 和 p5 的唯一值的数量,对于每个唯一的 p1 并给定 p2, p3,我想在 np4*np5 行中进行选择,其中 p1、p2、p3 与 v1 最小的一行匹配。然后,所需的输出应该是一个表,其中包含从原始表中选择的np1行,即包含原始表所做的所有变量。我知道如何从data.table中选择行,如何使用表达式和“by”,但我还没有设法将它们放在一起以产生所需的结果。

更新:我找到了答案。诀窍是,如何在“by?”创建的子集中选择最佳行?(当然,已经有内置的)解决方案:

np4 <- c("a", "b")
np5 <- c("m", "n")

ss2 <- data[ p4 %in% np4 & p5 %in% np5,
            .SD[which(v1==min(v1)),],
             by = "p1"]

来自data.table文档:

SD是数据。包含每个组的x数据子集的表,不包括由(或keyby)使用的任何列。

共有1个答案

祁高格
2023-03-14

这应该能行

np4 <- c("a", "b")
np5 <- c("m", "n")
data[p4 %in% np4 & p5 %in% np5,
     list(v1 = min(v1), v2 = v2[which.min(v1)]),
     by = c("p1", "p2", "p3", "p4", "p5")]
 类似资料:
  • 本文向大家介绍awk 选择表格数据中的特定列,包括了awk 选择表格数据中的特定列的使用技巧和注意事项,需要的朋友参考一下 示例 我们假设使用的文件;作为列定界符。选择一组特定的列仅需要打印语句。例如,以下程序从其输入中选择列3、4和7: 通常可以更仔细地选择要打印的行。当第一个字段为Alice或时,以下程序从其输入中选择列3、4和7 Bob:            

  • 问题内容: 我正在寻找一种选择SQL服务器上所有数据库的方法,这些数据库仅包含表“ dbo.mytable” 我怎样才能做到这一点 ? 我已经有了这两个sql查询: 和 第一个查询列出我的sql服务器上的所有数据库,第二个查询检查dbo.mytable是否存在。我想将它们合并。 谢谢 问题答案: 一种将它们全部归还到一个结果集中的简洁方法是

  • 问题内容: 理想情况下,我需要一个等于 但这是非法的。 我不能使用自动递增的字段。 row_number()是需要选择的行。 我该怎么办? 编辑:嗯,我使用iSql * plus进行练习,出于某些原因,使用limit和auto_increment是非法的。我最终创建了一个序列和一个触发器,并且每次输入一个条目时,ID都增加了1。 问题答案: 您可以使用代替。 如文档所述, 第一个参数指定要返回的第

  • 本文向大家介绍从基于特定月份的MySQL表中选择数据?,包括了从基于特定月份的MySQL表中选择数据?的使用技巧和注意事项,需要的朋友参考一下 使用MySQL中的方法选择基于月份的日期。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 以下是根据特定月份从表中选择数据的查询- 输出结果 这将产生以下输出-

  • 我有两张桌子,客户和订单是内部连接的。客户可以有多个与其关联的订单。在我的选择中,我然后按客户分组。id.我需要选择每个客户的最新订单,还需要选择在该订单中花费的金额。目前,我可以选择最近的订单日期,但不知道如何选择与订单日期同一行中的金额。 这是我当前的查询: 查询选择最近日期,但不选择与最近订单日期关联的金额。 表格声明:

  • data.table,我们可以根据行号或条件选择行: 但是,我不能同时选择行数和条件: 这可能是因为在这种格式下没有被解释为行号。我知道我可以链接这两个条件: 但是我想为这个子集分配新的列值 现在,它只为中间链接的 data.table 创建了列。我可以保存中间表,然后合并回原始表,但那会很麻烦。 实际上,我经常觉得 需要一个正确的行号。一个依赖于组的动态数字,但我想要一个可以识别每一行的唯一ID