tidyverse 收集多列

欧米亚提亚

我有以下数据框:

df <- structure(list(ID = 1:4, col1.date = structure(c(1546188000,
1272294300, 1087908540, 1512241620), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), col2.date = structure(c(1546237740, 1272928800,
1087966800, 1512277200), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
col3.date = structure(c(1546323000, 1272949200, 1088049600,
1512396000), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
col1.result = c(1.31, 0.95, 3.3, 0.55), col2.result = c(1.19,
1.57, 1.6, 0.59), col3.result = c(0.97, 2.13, 1.1, 0.57)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -4L))

我希望每个 ID 有三行两列:结果和日期。

这是我尝试过的:

df_long <- df %>%
gather(v, value, col1.date:col3.result) %>%
separate(v, c("var", "col")

但是我正在将日期转换为数字。

我究竟做错了什么?

r2evans

由于您最终想要重塑多个列(这是 tidyr-1.0.0 的“新方式”),那么尝试pivot_longer. 此答案直接改编自帮助页面中的示例?pivot_longer

df %>%
  pivot_longer(
    col1.date:col3.result,
    names_to = c("set", ".value"),
    names_pattern = "(.*)\\.(.*)"
  )
# # A tibble: 12 x 4
#       ID set   date                result
#    <int> <chr> <dttm>               <dbl>
#  1     1 col1  2018-12-30 16:40:00  1.31 
#  2     1 col2  2018-12-31 06:29:00  1.19 
#  3     1 col3  2019-01-01 06:10:00  0.97 
#  4     2 col1  2010-04-26 15:05:00  0.95 
#  5     2 col2  2010-05-03 23:20:00  1.57 
#  6     2 col3  2010-05-04 05:00:00  2.13 
#  7     3 col1  2004-06-22 12:49:00  3.3  
#  8     3 col2  2004-06-23 05:00:00  1.6  
#  9     3 col3  2004-06-24 04:00:00  1.1  
# 10     4 col1  2017-12-02 19:07:00  0.55 
# 11     4 col2  2017-12-03 05:00:00  0.59 
# 12     4 col3  2017-12-04 14:00:00  0.570

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫功能收集类似tidyverse

使用dplyr / tidyverse删除基于多列的重复行?

用多列拆分df的“ tidyverse”方法是什么?

tidyverse汇总多列,但将结果显示为行

使用 tidyverse 汇总对多列应用相同的操作

mutate(across) 在 tidyverse 中生成多個新列

使用 tidyverse 改变特定列

从宽到长收集数据帧,并使用R中的tidyverse生成新列

收集和总结tidyverse中的步骤后保持因子顺序

r-在tidyverse中使用单个管道收集多个键

Tidyverse从其他数据框中收集行数据

tidyverse转换数据(一列)

在tidyverse中将列拆分为日期/时间

在tidyverse中动态添加多列

使用 tidyverse 整理多组宽列的表格

使用tidyverse创建以恒定速率增加的列

在tidyverse的新列中分离复制数据

使用tidyverse,如何动态生成新列?

使用tidyverse将具有多列的相同功能作为输入应用于R中的多列

使用Tidyverse计数REDCap数据中多列中特定字符串的频率

tidyR 重塑收集多列

使用tidyverse语言添加列,但使用列号代替列名

tidyverse-删除嵌套列/列表中的列

如何在R中将10列收集到一列中并将其他10列收集到另一个列中,仅具有tidyverse的计数和频率

如何使用tidyverse根据特定条件添加新列?

使用tidyverse来“取消嵌套”内部的data.frame列

在tidyverse中,根据现有变量创建seq()列

使用tidyverse将字符串列拆分为许多列

tidyverse:用于所有列组合的卡方