按组前缀旋转更长的时间

2023-12-11

我需要按列字符串前缀分组更长的时间。下面的玩具示例有两个组“A”和“B”,但我需要一个针对任意数量的前缀组的通用 tidyverse 解决方案。

#toy df
set.seed(1)
df <- data.table(
  date = rep(seq(as.Date("2020-01-01"),as.Date("2020-01-05"),by="day"),each=6),
  k = rep(c("A.mean","A.median","A.min","B.mean","B.median","B.min"),5),
  v = runif(30,0,50)
  ) %>%
  pivot_wider(names_from = k, values_from = v)

df %>% head

  date       A.mean A.median  A.min B.mean B.median B.min
  <date>      <dbl>    <dbl>  <dbl>  <dbl>    <dbl> <dbl>
1 2020-01-01   13.3     18.6 28.6    45.4      10.1 44.9 
2 2020-01-02   47.2     33.0 31.5     3.09     10.3  8.83
3 2020-01-03   34.4     19.2 38.5    24.9      35.9 49.6 
4 2020-01-04   19.0     38.9 46.7    10.6      32.6  6.28
5 2020-01-05   13.4     19.3  0.670  19.1      43.5 17.0 

#pivot longer by group prefix
df %>%
  select(date,matches("A\\.")) %>%
  rename_with(~str_replace(.x,"A\\.","")) %>%
  mutate( k = "A") %>%
  bind_rows(
    df %>%
      select(date,matches("B\\.")) %>%
      rename_with(~str_replace(.x,"B\\.","")) %>%
      mutate( k = "B")
  )

   date        mean median    min k    
   <date>     <dbl>  <dbl>  <dbl> <chr>
 1 2020-01-01 13.3    18.6 28.6   A    
 2 2020-01-02 47.2    33.0 31.5   A    
 3 2020-01-03 34.4    19.2 38.5   A    
 4 2020-01-04 19.0    38.9 46.7   A    
 5 2020-01-05 13.4    19.3  0.670 A    
 6 2020-01-01 45.4    10.1 44.9   B    
 7 2020-01-02  3.09   10.3  8.83  B    
 8 2020-01-03 24.9    35.9 49.6   B    
 9 2020-01-04 10.6    32.6  6.28  B    
10 2020-01-05 19.1    43.5 17.0   B 

这是一个两步过程(出于演示目的,以两行显示)。首先旋转更长的时间来创建 k、统计名称和值的列,然后旋转更宽的位置来创建所需的结果。

下面编辑的代码,通过在“names_to”说明符中使用“.value”通配符选项,只需一步即可获得答案。

library(tidyr)
set.seed(1)
df <- data.frame(
   date = rep(seq(as.Date("2020-01-01"),as.Date("2020-01-05"),by="day"),each=6),
   k = rep(c("A.mean","A.median","A.min","B.mean","B.median","B.min"),5),
   v = runif(30,0,50)
) %>%
   pivot_wider(names_from = k, values_from = v)


#temp <- pivot_longer(df, -date, names_sep = "\\.", names_to = c("k", "stat"))
#answer <- pivot_wider(temp, id_cols = c("date", "k"), names_from= "stat", values_from="value")

#updated answer simplified down to just the pivot longer function
answer <- pivot_longer(df, -date, names_sep = "\\.", names_to = c("k", ".value"))

print(head(answer))
# A tibble: 6 x 5
date       k      mean median   min
<date>     <chr> <dbl>  <dbl> <dbl>
1 2020-01-01 A     13.3    18.6 28.6 
2 2020-01-01 B     45.4    10.1 44.9 
3 2020-01-02 A     47.2    33.0 31.5 
4 2020-01-02 B      3.09   10.3  8.83
5 2020-01-03 A     34.4    19.2 38.5 
6 2020-01-03 B     24.9    35.9 49.6 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按组前缀旋转更长的时间 的相关文章

  • 循环遍历列并将字符串长度添加为新列

    我有一个包含多列的数据框 并且希望为每个列输出一个单独的列 其中包含每行的长度 我试图迭代列名称 并为每列输出一个附加有 length 的相应列 例如 col1 col2 将转到 col1 列2 col1 长度 列2 长度 我正在使用的代码
  • 如何找到对象的创建位置?

    我目前正在努力改进对其他脚本有不同调用的代码 我想知道在哪里创建对象 对于其中一些人来说 只需使用文本编辑器的搜索选项即可 只要看看是否obj lt or obj 有什么结果 但这不适用于使用assign功能 在加载的脚本中创建的也不是 T
  • 替换为 NA

    我有一个包含条目的数据框 看来这些值没有被视为 NA 因为 is na 返回 FALSE 我想将这些值转换为 NA 但找不到方法 Use dfr dfr
  • 如何规划庭院灯最有效的路线

    我正在尝试挂一些庭院灯 基于另一个问题 https cs stackexchange com questions 80134 christmas light route efficiency我问 我意识到我需要一种算法来解决路由检查问题 h
  • 在 RStudio 控制台中显示西里尔字母

    我在 Rstudio 控制台中显示俄语字符时遇到问题 我使用 readxl 包加载带有俄语的 Excel 文件 西里尔字母在数据框中正确显示 但是 如果我运行一个输出包含变量名称的函数 RStudio 控制台将显示符号而不是正确的西里尔字符
  • 如何编写一个也接受字符输入的 NES 函数?

    我正在开发一个将字符串作为函数参数的 R 包 现在我想使用非标准评估来允许非字符串输入 另外 为了保持向后兼容性 我想保留函数接受字符串的可能性 哈德利给出了example https cran r project org web pack
  • 哪种 LaTeX 包与 knit 一起使用以获得更多的表格控制?禁忌?

    我正在用 knitr 写一张更长的桌子xtable和tabular environment longtable 在 longtable 包中时print将它们纳入我的 Rnw file 问题是我对longtable环境控制不够 我有一些文本
  • R 中的 For 循环分配给数据框

    运行 for 循环后 我在分配给数据帧时遇到问题 当我使用 print 时 它给出了我的价值 有什么解释吗 salesdate lt rep seq from as Date 2013 12 19 to as Date 2013 12 23
  • 没有垂直线的直方图

    当我创建直方图时 它看起来很像这样 set seed 1 x lt 1 100 y lt x rnorm 50 y round y hist y Is there a way to make a histogram look a bit l
  • 根据绘图单击事件对数据框进行子集化

    我有下面的数据框 Name lt c John Bob Jack Number lt c 3 3 5 NN lt data frame Name Number 还有一个简单闪亮的应用程序 可以从中创建一个绘图直方图 我的目标是单击直方图的一
  • 将 R 传单地图保存为 html:不包括图块

    我正在尝试使用 saveWidget 或将 rmd 文件输出到 html 来保存 R 传单地图 如下所述 将传单输出保存为 html https stackoverflow com questions 30110377 saving lea
  • 为什么 quosures 在 group_by() 中起作用,但在 filter() 中不起作用?

    我正在构建一个函数 我将根据字符串操作数据框 在该函数中 我将根据字符串构建一个列名称 并使用它来操作数据框 如下所示 library dplyr orig df lt data frame id 1 3 amt c 100 200 300
  • R:使用 as.formula 修复模型中的模型调用

    我有一个gls模型 其中我将公式 来自另一个对象 分配给模型 equation lt as formula aic obj row model gt equation temp avg I year 1950 mod1 lt gls equ
  • 插值时间序列

    我有两组具有不同时间戳的数据 一组数据包含校准数据 另一组包含样本数据 校准的频率比样品少得多 我想做的是将校准数据 低频 插值到采样时间序列 高频 上 sam lt textConnection time value 01 00 52 2
  • 在 R 中使用科学记数法和 xtable

    我将 data frame 传递给 xtable dat table lt xtable dat 1 20 digits 10 我宁愿使用科学记数法 而不是像那样显示数字 我该怎么做呢 看过了 但我发现的只是R 格式化xtable中的数字
  • 在ggplot2中添加水平线到绘图和图例

    这段代码创建了一个漂亮的图 但我想在 y 50 处添加一条水平黑线 并让图例显示一条黑线 并在图例中显示文本 cutoff 但在图例中保留源点 我可以使用 geom line 添加该行 但无法在图例中获取该行 library ggplot2
  • 生成与现有变量具有预定义相关性的二进制变量

    对于模拟研究 我想生成一组随机变量 连续变量和二元变量 这些变量与已经存在的变量具有预定义的关联binary变量 此处表示为x 对于这篇文章 假设x是按照下面的代码生成的 但请记住 在现实生活中 x是一个已经存在的变量 set seed 1
  • 如何将带有几行代码的字符数组转换为 data.frame?

    我有以下数组 my list lt c Jan 01 Dec 31 00 00 24 00 Jan 01 Jun 30 12 00 18 00 Jul 06 Dec 31 09 00 19 00 导致以下结果的最短代码是什么 x1 x2 x
  • 使用 ggplot2 在一张画布上绘制多个图形[重复]

    这个问题在这里已经有答案了 我正在尝试根据此表将两个 ggplot2 图合并为一个图 Type RatingA RatingB 1 One 3 36 2 Two 5 53 3 One 5 57 4 One 7 74 5 Three 4 38
  • 用于检查和批量线性模型的数据表选项

    我想知道是否有data table用于从数据集中批量处理线性模型并首先进行检查的选项 我需要对每个唯一标识符运行一堆线性模型 但首先我需要进行检查 对于每个唯一的 id 和年份 我需要检查是否有至少 24 个月的先前每月数据 但不超过 60

随机推荐

  • 根据容器宽度动态调整文本大小

    我正在研究响应式设计 并且有一些显示 h3 当浏览器窗口宽度减小时 我想缩小的标签 初始设置 基于 960px 宽度 正文字体大小设置为 14px h3标签的字体大小为40px 包含div的宽度为230px 这是我为 javascript
  • 如何在 Google Drive Api v3 中进行部分下载?

    文档说here您需要使用 Range 标头Range bytes 500 999 My code def downloadChunkFromFile file id start length headers Range bytes form
  • 以同样的方式打乱多个 javascript 数组

    我有两个数组 var mp3 sing mp3 song mp3 tune mp3 jam mp3 etc var ogg sing ogg song ogg tune ogg jam ogg etc 我需要对两个数组进行洗牌 以便它们以相
  • 检索 AngularJS 应用程序名称

    如何在 AngularJS 中检索当前应用程序的名称 我的意思是ng app foo value 我搜索了 API 文档 但找不到任何对此的参考 我的解决方案实际上我已经找到了这样的解决方案 angular element ng app a
  • 有没有办法在一定的空闲时间后将 GKE 集群的大小调整为 0 个节点?

    我有一个 GKE 集群 我希望它位于 0 个节点 扩展到 3 个节点来执行任务 然后在一定的空闲时间后 缩小到 0 个节点 有没有办法做到这一点 由于集群中运行着系统 Pod GKE 集群永远无法缩小到 0 在 kube system 命名
  • 按多个属性对 js 对象进行分组

    在下面的示例中 我有一个对象数组 我按其属性中的 2 个对它们进行分组 基于https stackoverflow com a 40142591 var arr id 1 tags main yearCode 2018 id 2 tags
  • 如何键入深度嵌套的字典和列表结构[重复]

    这个问题在这里已经有答案了 在给定的 d d1 1 2 d2 this is tricky tough 1 2 me 问题要求我打印 me 我试图理解字典中给定的键和值来查找基于该键的任何关系 但无法这样做 在进一步潜水之前是否应该了解某些
  • 证明内容 flex-end 不适用于 IE

    Flex end适用于chrome和firefox 但不适用于ie 请执行以下代码 flex container display flex flex wrap nowrap background color DodgerBlue flex
  • 如何使用 JavaScript 和 PHP 将画布图像保存到服务器?

    我正在努力使用 JavaScript 和 PHP 将画布图像保存到服务器 我已经尝试了 JS 和 PHP 的多个示例 但总是失败 关于如何将图像数据发送到 PHP 脚本 base64 blob FormData 的建议存在冲突 并且我不确定
  • 简单的 Html DOM 缓存

    我正在使用 Simple HTML DOM 来抓取 经许可 一些网站 我基本上抓取了大约 50 个不同网站的统计数据 这些数据每天更新大约四次 正如您可以想象的那样 进行抓取需要时间 因此我需要通过进行一些缓存来加快该过程 我的愿景是 DA
  • 使用相当于 AutoFixture 'With' 的匿名值进行广义 Func 包装

    在基于 AutoFixture 的测试中 我尝试尽可能清晰地表达以下内容 当我经过时
  • jquery根据选择值填充表中的文本输入

    我有一个表单 其中包含一个名为 Client ID 的选择以及一些其他文本输入 我需要的是 当用户选择 Client ID 时 我的字段 Address1 Address 2 等应该填充数据库查询的结果 如下所示 SELECT Addres
  • 拟合回归曲面的 3D 图

    我正在尝试制作 3D 图表来绘制拟合回归曲面 我见过以下例子 使用 Matplotlib 在 3d 中绘制线性模型 将散点图与曲面图相结合 3 维数据的最佳拟合曲面 然而 第一个非常过时 不再工作 第二个是相关的 但我在生成值时遇到了一些麻
  • swift 中的 kCGImageAlphaNone 未解析的标识符

    我正在尝试使用 Swift 中的 CoreImage 将图像 纹理 对于 SpriteKit 转换为灰度 我找到了这个答案 https stackoverflow com a 17218546 836501我尝试将其转换为适用于 iOS7
  • 如何从 ASPX.VB 函数内部调用 ASSX?

    我需要从我用 ASHX 制作的 API 中获取一个值 通常它是从 javascript 调用的 但我需要在 ASP NET 中正确调用它 我认为这应该不是问题 但我不确定语法 那么你有几个选择 您可以将 ASHX 中的代码重构为共享库中的代
  • 从 SQL Server 的 XML 执行计划中提取数据

    我的最终目标是从缓存的执行计划中自动提取所有引用的列 这将帮助我们跟踪我们计划的 SSRS 报告集使用的所有列 感兴趣的 XML 数据如下所示
  • 在flutter中拖动widget时如何实现定位线?

    我试图在拖动时获取定位线 紫色线 请参阅该附件以了解有关该问题的更多信息 线条是用canvas drawPoints 在 和 的paint 方法 您可以更改它来绘制虚线 现在 带有黑色实线 它看起来像这样 class FooResizer
  • Canvas getImageData 和 putImageData 部分加载图像

    这是我的代码 我正在上传图像并使用如下 gt var canvas document createElement canvas gt var context canvas getContext 2d gt context drawImage
  • C++ 全局变量和初始化顺序

    比方说 我有以下简单的代码 Main cpp include A h For several reasons this must be a global variable in the project A a1 int tmain int
  • 按组前缀旋转更长的时间

    我需要按列字符串前缀分组更长的时间 下面的玩具示例有两个组 A 和 B 但我需要一个针对任意数量的前缀组的通用 tidyverse 解决方案 toy df set seed 1 df lt data table date rep seq a