此问题在此处已有答案:
tidyr use separate_rows over multiple columns(3个答案)
3天前关闭。
此帖子已于3天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
我有这样的数据:
library(tidyverse)
data <- tibble(id = 1:3,
events = c("E1/E2/E3", "E3/E2", "E1"),
times = c("10/20/30", "35/20", "15"))
对于每个id,都有一个列,其中包含由/分隔的事件列表,以及这些事件的时间列表也由/分隔。事件和时间按位置匹配。我想将此数据转换为一个整洁的格式,其中有一个包含事件名称和时间的列,对于每个单独的event:time组合,id重复。
我想要的格式看起来像这样:
desired <- tibble(id = c(1,1,1,2,2,3),
event = c("E1", "E2", "E3", "E3", "E2", "E1"),
time = c(10, 20, 30, 35, 20, 15))
我在概念上考虑过使用pivot long,但我不确定如何做到这一点,因为我几乎是在列值内旋转。还尝试将列拆分为多个,但我遇到了每个id的事件顺序和数量不同的问题。感谢您的帮助!
编辑:有一个类似的问题问的概念;然而,这个问题已经在标题中确定了一个函数来执行此操作,并且可能很难找到:tidyr use separate_rows over multiple columns
1条答案
按热度按时间7y4bm7vi1#
你可以在两列上使用
separate_rows
fromtidyr
和sep = "/"
,你想像这样分开:创建于2023年3月30日,使用reprex v2.0.2