每个 id 单行到每个 id 多行

2024-03-28

我想根据给定的时间间隔将观察结果从每个 id 单行扩展到每个 id 多行:

> dput(df)
structure(list(id = c(123, 456, 789), gender = c(0, 1, 1), yr.start = c(2005, 
2010, 2000), yr.last = c(2007, 2012, 2000)), .Names = c("id", 
"gender", "yr.start", "yr.last"), class = c("tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -3L))
> df
# A tibble: 3 x 4
     id gender yr.start yr.last
  <dbl>  <dbl>    <dbl>   <dbl>
1   123      0     2005    2007
2   456      1     2010    2012
3   789      1     2000    2000

我想让 id 每年扩展为一行:

> dput(df_out)
structure(list(id = c(123, 123, 123, 456, 456, 456, 789), gender = c(0, 
0, 0, 1, 1, 1, 1), yr = c(2005, 2006, 2007, 2010, 2011, 2012, 
2000)), .Names = c("id", "gender", "yr"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -7L))
> df_out
# A tibble: 7 x 3
     id gender    yr
  <dbl>  <dbl> <dbl>
1   123      0  2005
2   123      0  2006
3   123      0  2007
4   456      1  2010
5   456      1  2011
6   456      1  2012
7   789      1  2000

我知道如何融化/重塑,但我不知道如何延长岁月。 谢谢。


这是一个基本的 R 方法。

# expand years to a list
yearList <- mapply(":", df$yr.start, df$yr.last)

现在,使用此列表来计算每个 ID 重复的行数(第二个参数rep),然后将其附加为向量(从列表转换为unlist) using cbind.

# get data.frame
cbind(df[rep(seq_along(df$id), lengths(yearList)), c("id", "gender")], yr=unlist(yearList))
     id gender   yr
1   123      0 2005
1.1 123      0 2006
1.2 123      0 2007
2   456      1 2010
2.1 456      1 2011
2.2 456      1 2012
3   789      1 2000
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每个 id 单行到每个 id 多行 的相关文章

  • 在 RStudio 中加载 tidyverse 时出错

    当尝试在 RStudio 中加载 tidyverse 包时 我收到以下错误消息 图书馆 tidyverse 错误 tidyverse 的包或命名空间加载失败 onAttach 在 tidyverse 的 AttachNamespace 中失
  • 如何评估(或创建)r 中 data.table 中的动态列

    我想创建一个新的 data table 或者只是向 data table 添加一些列 指定多个新列很容易 但如果我希望第三列根据我正在创建的列之一计算值 会发生什么情况 我认为 plyr 包可以做这样的事情 我们可以在 data table
  • 在同一个 UI 元素中整齐地顺序显示不同尺寸的图像

    在我的应用程序中 我需要在其他 UI 元素中显示单个预渲染图像 我希望其他元素紧紧包裹在图像的顶部和底部 显示的图像取决于应用程序的状态 并且图像的大小可能不同 这个问题 https stackoverflow com questions
  • 是否可以用 R 编写音乐并播放? (Mac OS X)[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道是否有一种方法可以用 r 编写脚本来创作音乐 就像编码程序 SuperCollider 或编码
  • 根据另一列修改 data.table 的列并添加新列

    我有一个data table DT有两列 V1 V2 1 1 3 2 2 4 3 3 5 4 2 2 5 3 8 6 1 4 7 2 5 对于每一行 我想采用相同的所有条目V1并添加V2条目然后划分V2按该总和输入并添加到第三列中 例如 在
  • R/d3heatmap/shiny - 有没有办法在 d3 工具提示中嵌入图像?

    我想在滚动单元格时在 d3 工具提示中嵌入图像 而不是默认的行 列 值数据 library shiny library d3heatmap ui lt shinyUI fluidPage titlePanel Old Faithful Ge
  • 在R中使用grepl完成单词匹配

    考虑以下示例 gt testLines lt c I don t want to match this This is what I want to match gt grepl is testLines gt 1 TRUE TRUE 不过
  • 使用并行的 parLapply:无法访问并行代码中的变量

    我最近得到了一台具有多个核心的计算机 并且正在学习使用并行计算 我相当熟练lapply并被告知parLapply工作原理非常相似 但我没有正确操作它 看来我必须明确地将所有内容放入parLapply使其工作 即要使用的函数 变量等 和lap
  • 在 R 中导入 png 文件并转换为动画(.mp4)

    我正在尝试用 R 中的几个 png 文件创建一个简短的动画 我尝试了 packagemagick但只有当我将它们保存为 gif 时它才有效 当我尝试另存为 mp4 时 它将生成一个 mp4 文件 但一旦打开它 只会显示第一张图像 我的代码是
  • R 分号将列分隔为行

    我正在使用 RStudio 2 15 0 并使用 XLConnect 从 Excel 创建了一个包含 3000 多行和 12 列的对象 我试图将一列分隔 拆分为行 但不知道这是否可能或如何执行 下面的数据示例使用 3 列连接 对此的任何帮助
  • 使用不同时区的 POSIXct 到数字

    我想我一定不明白 POSIXct 是如何工作的 或者什么的 据我了解 它是自纪元以来的秒数 纪元是标准时间 例如 1970 01 01 GMT 我取两个 POSIXct 时间 一个在 EST 一个在 PST 它们是相同的绝对时间 然而 当我
  • 如何转换 R 中列匹配模式中的值

    我有这个数据框mydf 专栏nucleotide可以有A T G C字母 我想更改字母A to T C to G G to C and T to A 如果strand列是 我该怎么做 mydf lt structure list seqna
  • 过滤等于或大于某个值的数据的函数

    我有一个包含数千行和列的数据框 行包含基因名称 列包含样本名称 我只想保留 3 个以上样本中包含等于或大于 5 的值的行 到目前为止我已经尝试过 但我不知道如何设置多个条件 data frame1 gt filter all all var
  • 如何reshape()numpy中奇数行和偶数行的总和

    示例1 a np array 1 11 111 2 22 222 3 33 333 4 44 444 5 55 555 6 66 666 7 77 777 8 88 888 gt gt gt a array 1 11 111 2 22 22
  • 如何将数据框列名称插入方程 R 中? [复制]

    这个问题在这里已经有答案了 我试图通过引用数据框列名称并将其插入方程而不是直接调用名称来使一段代码更加灵活 尽管我必须直接插入字段名称 但以下示例有效 require e1071 class c 0 25 0 34 0 55 field1
  • 带输入的 R闪亮仪表板可折叠菜单项

    我正在尝试实施一个fileInput using library shinydashboard 为用户提供上传文件的选项 就像完成的那样 here https shiny rstudio com articles upload html具有
  • 如何访问 RStudio 中的脚本/源历史记录?

    我想访问 RStudio 源面板中输入内容的历史记录 我对我们学习和输入代码的方式感兴趣 我想分析的三件事是 i 一个人输入代码的方式 ii 不同的人如何输入代码 iii 初学者提高打字的方式 作为第一次尝试 以这种方式获取命令的历史记录是
  • pandas 数据框中的 count 和 countif

    我有一个 DF 如下所示 trainee course completed days overdue Ava ABC Yes 0 Bob ABC Yes 1 Charlie DEF No 10 David DEF Yes 0 Emily D
  • 将数据帧转换为多列的系列

    我尝试将数据帧转换为系列但它显示以下错误 我使用 pandas Series Dataframe gt 将 Dataframe 转换为系列 我想要第一张图像格式的输出 请尝试以下方法从提到的数据中获取 Series 对象 假设data是您正
  • 将行追加到 Pandas DataFrame 添加 0 列

    我正在创建一个 Pandas DataFrame 来存储数据 不幸的是 我无法提前知道我将拥有的数据行数 所以我的方法如下 首先 我声明一个空的 DataFrame df DataFrame columns col1 col2 然后 我附加

随机推荐