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

R dplyr行方向变异

孙京
2023-03-14

大家早上好,这是我第一次在stack overflow上发帖。感谢任何帮助!

我有2个用于分析股票数据的数据框。一个数据框包含日期和其他信息,我们可以将其称为df:

df1 <- tibble(Key = c('a','b','c'), i =11:13, date= ymd(20110101:20110103))

第二个数据框也有日期和其他重要信息。

df2 <-tibble(Answer = c('a','d','e','b','f','c'), j =14:19, date= ymd(20150304:20150309))

这是我想做的:对于df1中的每一行,我需要:

-在df2中查找日期,当df2$答案与df1$key相同时,它最接近df1中该行的日期。

-然后提取df2中该行的另一列的信息,并将其放入df1中的新行。

我尝试的代码:

df1 %>%
 group_by(Key, i) %>%
 mutate(
`New Column` =  df2$j[
  which.min(subset(df2$date, df2$Answer== Key) - date)])

其结果是:

Key       i date       `New Column`
1 a        11 2011-01-01           14
2 b        12 2011-01-02           14
3 c        13 2011-01-03           14

对于第一行 a,这是正确的。在 df2 中,最接近的日期是 2015-03-04,其中 j 的值实际上是 14

但是,对于第二行,Key=b,我希望df2子集只查看df2$Answer=b所在行的日期。因此,日期应为2015-03-07,其中j=17

谢谢你的帮助!

耶西

共有1个答案

魏安然
2023-03-14

这应该可行:

library(dplyr)
df1 %>% 
  left_join(df2, by = c("Key" = "Answer")) %>% 
  mutate(date_diff = abs(difftime(date.x, date.y, units = "secs"))) %>% 
  group_by(Key) %>% 
  arrange(date_diff) %>% 
  slice(1) %>% 
  ungroup()

我们首先用left_join连接两个数据帧。是的,我知道每个可能有多个日期,请放心。

接下来,我们计算(使用mutate)两个日期date. xdate. y之间差异的绝对值(abs

现在我们有了这个,我们将使用<code>group_by</code>按<code>键</code>对数据进行分组。这将确保每个不同的将在后续计算中单独处理。

由于我们已经计算了< code>date_diff,现在我们可以重新排序(< code >排列)每个< code >键的数据,将最小的< code>date_diff作为每个< code >键的第一个。

最后,我们只对每个的第一个最小date_diff感兴趣,因此我们可以使用 slice(1) 丢弃其余部分。

这条管道为我们提供了以下内容:

  Key       i date.x         j date.y     date_diff
  <chr> <int> <date>     <int> <date>     <time>   
1 a        11 2011-01-01    14 2015-03-04 131587200
2 b        12 2011-01-02    17 2015-03-07 131760000
3 c        13 2011-01-03    19 2015-03-09 131846400
 类似资料:
  • 本文向大家介绍Rdplyr的单表动词,包括了Rdplyr的单表动词的使用技巧和注意事项,需要的朋友参考一下 示例 dplyr在中引入了数据处理语法R。它提供了一个一致的接口来处理数据,无论数据存储在哪里:data.frame,data.table或database。其中的关键部分dplyr是使用Rcpp编写的,这使得使用内存数据的速度非常快。 dplyr公司的理念是拥有能做一件事的小功能。这五个简

  • 我如何在配置更改时保留这个列表?我已经寻找了许多解决方案,但许多人建议在manifest中使用'Android:ConfigChanges',我完全反对使用。许多人建议,我也读到过--在Fragment中使用setRetaInstance(true)来保留这个片段。 我尝试实现它,但我失败了。许多教程在方向改变后使用findFragmentByTag检查片段,但在我的情况下,它总是返回null。有

  • 问题内容: 我使用的是Swift,我希望能够在旋转到风景时加载UIViewController,有人可以指出正确的方向吗? 我在网上找不到任何东西,并且对文档有些困惑。 问题答案: 这是我的工作方式: 在里面 我把函数: 然后在AppDelegate类中放入以下函数: 希望这对其他人有帮助! 谢谢!

  • jQuery Mobile 方向改变(orientationchange)事件 当用户垂直或水平旋转移动设备时,触发方向改变(orientationchange)事件。 $(document).ready(function(){ $("#btn").click(function(){ $(".iphone").css({ '-webkit-transform':'rotate(90deg)'

  • 问题内容: 是否可以使用JavaScript在iPad或Galaxy Tab上检测浏览器方向的变化?我认为使用CSS媒体查询是可能的。 问题答案: 更新: 您可能要签出 jQuery移动方向更改 或普通的JS之一: MDN: 较旧的答案 http://www.nczonline.net/blog/2010/04/06/ipad-web-development- tips/ iPad上的Safari

  • 问题内容: 我想将两个图像添加到单个图像视图(即,用于横向显示一个图像,用于纵向显示另一个图像),但是我不知道如何使用快速语言检测方向变化。 我尝试了这个答案,但只拍了一张图片 我是iOS开发的新手,任何建议将不胜感激! 问题答案: