提问人:Dennis Chan 提问时间:11/1/2023 最后编辑:Dennis Chan 更新时间:11/1/2023 访问量:44
扩展/复制/整理包含两个或多个值的元素的行?[复制]
Expanding/Duplicating/Tidying a row with an element containing two or more values? [duplicate]
问:
亲爱的 StackOverflow 社区:
我正在努力将我的数据集转换为整洁的格式。我有一个数据帧,其中的一些列包含具有“多个值”的值。这些多个值以带有常量分隔符 (“|”) 的字符串形式给出。下面给出了我的数据集的一个例子:
df <- tibble(
v1 = c(1,2,3),
v2 = c('x','y','z'),
v3 = c('a|b','c|d|e','f'),
v4 = c('red|blue','green|yellow|pink','purple'))
df
我的愿望是通过“扩展”/“复制”包含多个值的行将其转换为整洁的格式,其中常量值是重复的,常量分隔符之间的值将是包含多个值的所有列的新行中的“新值”。也就是说,我想要的输出是这样的:
df_desired <- tibble(
v1 = c(1,1,2,2,2,3),
v2 = c('x','x','y','y','y','z'),
v3 = c('a','b','c','d','e','f'),
v4 = c('red','blue','green','yellow','pink','purple'))
df_desired
已经整洁的行应保持不变。
对于对我的问题描述不充分,我深表歉意,但我希望我给出的例子能传达我的问题和期望的结果。先谢谢你们!
答: 暂无答案
评论
tidyr::separate_longer_delim(df, cols = c(v3, v4), delim = "|")
df |> tidyr::separate_longer_delim(cols = v3:v4, delim = "|")