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

在Data.Frame中跨列搜索的更简单解决方案

洪英豪
2023-03-14
Var1 Var2 Var3 X Y Z
VIX  SPX  VOL  2 3 4
SPX  VIX  NA   4 4 NA
SPX  NA   NA   2 NA NA

我想将第一行与来自user的输入隔离为VIX、SPX和VOL。然而,在这样的数据库中,我不知道这些变量是在哪个组合中保存的。

也就是说,我们可以将VIX设为Var1,SPX设为Var2,VOL设为Var3,也可以将VOL设为Var1,SPX设为Var2,VIX设为Var3。在这种情况下,可以有6种组合。

我可以将字符串串联起来,在R中创建所有6种可能性,并进行行查找。但我正在寻找一个更简单的算法。

我正在尝试使用子集来过滤一列又一列,但这同样很麻烦。在R中有更简单的出路吗

共有1个答案

齐成和
2023-03-14

我们可以对前三列按行使用apply并使用grepl检查它是否具有三个可能值中的任何一个,最后使用all验证该行的所有三列都具有接受的值。

df[apply(df[1:3], 1, function(x) all(grepl("VIX|SPX|VOL", x))), ]

#   Var1 Var2 Var3 X Y Z
#1  VIX  SPX  VOL  2 3 4

或者就像@cath在注释中提到的那样,使用上面的代码会导致选择一些不必要的行。我们可以把它改成

df[apply(df[1:3], 1, function(x) all(c("VIX", "SPX", "VOL") %in% x)), ]

以确保所有三个唯一值都出现在三列中。

 类似资料:
  • 本文向大家介绍AngularJs解决跨域问题案例详解(简单方法),包括了AngularJs解决跨域问题案例详解(简单方法)的使用技巧和注意事项,需要的朋友参考一下 首先我们做点准备说明,不然你明白我说的是啥意思别人不明白,就算别人明白了那总有人不明白,那你要说了,我的意思是这个说明必须要做了,答案是必须的,为了更好的方便大家理解嘛。 我们以两个主域名或者一个主域名+一个二级域名为例,均可演示跨域问

  • 给定一个二维板和一个单词,找出这个单词是否存在于网格中。 这个词可以由顺序相邻单元格的字母构成,其中“相邻”单元格是那些水平或垂直相邻的单元格。同一个字母单元格不能使用不止一次。 例如,给定 这是典型的DFS+回溯解决方案。它将与进行比较。如果它们匹配,则将更改为以将其标记为已访问。然后移动到下一个(即)并将其与当前邻居进行比较(通过递归进行)。 下面是我的代码,这是不工作。我试着调试,但我觉得在

  • 注意:这不是关于矩阵的问题的重复,因为matrix和data.frame在R中是根本不同的数据类型,在DPLYR中可以不同地工作。有几个答案适用于Data.Frame,但不适用于Matrix。

  • 主要内容:1.@CrossOrigin,2.网关整合,3.Httpclient因为浏览器的同源政策,就会产生跨域。比如说发送的异步请求是不同的两个源,就比如是不同的的两个端口或者不同的两个协议或者不同的域名。由于浏览器为了安全考虑,就会产生一个同源政策,不是同一个地方出来的是不允许进行交互的。 1.@CrossOrigin 在控制层加入允许跨域的注解,即可完成一个项目中前后端口跨域的问题 2.网关整合 作为Spring Cloud生态系统中的网关,目标是替代,其 不仅提供统

  • 主要内容:1.@CrossOrigin,2.网关整合,3.Httpclient因为浏览器的同源政策,就会产生跨域。比如说发送的异步请求是不同的两个源,就比如是不同的的两个端口或者不同的两个协议或者不同的域名。由于浏览器为了安全考虑,就会产生一个同源政策,不是同一个地方出来的是不允许进行交互的。 1.@CrossOrigin 在控制层加入允许跨域的注解,即可完成一个项目中前后端口跨域的问题 2.网关整合 作为Spring Cloud生态系统中的网关,目标是替代,其 不仅提供统

  • 问题内容: 检索适用于所有浏览器的XmlHttpRequest对象的最简单,最安全的方法是什么?没有任何额外的库。您是否经常使用一个代码段? PS:我知道网上有很多例子,但这恰恰是我要问的原因:例子太多了,我只想简单实用的东西来工作。 问题答案: 虽然我建议使用完整的库来简化用法,但是在现代浏览器中,进行AJAX请求可能非常简单: 以下代码段是基于quirksmode.org的代码段的更高级代码段