我有一个复杂的数据集,如下所示:
df1 <- tibble::tribble(~"Canada > London", ~"", ~"Notes", ~"United Kingdom > London", ~"", ~"",
"Restaurant", "Price", "Range", "Restaurant", "Price", "Range",
"Fried beef", "27", "25-30", "Fried beef", "29", "25 - 35",
"Fried potato", "5", "3 - 8", "Fried potato", "8", "3 - 8",
"Bar", "Price", "Range", "Price", "Range", "",
"Beer Lager", "5", "4 - 8", "Beer Lager", "6", "4 - 8",
"Beer Dark", "4", "3 - 7", "Beer Dark", "5", "3 - 7")
或者,对于视觉表示:
它的参数很长(如啤酒淡啤、啤酒黑啤......),数据输入很宽(许多宽元素,如加拿大〉伦敦,或英国〉伦敦)。
所需的输出将是两个数据集,如下所示:
1.第一个数据集(值):
1.第二个数据集(范围):
任何建议都将不胜感激:)
2条答案
按热度按时间44u64gxh1#
您的数据既不宽也不长,而是一个杂乱的数据表,需要进行一些清理才能将其转换为整洁的数据。之后,您可以使用
tidyr::pivot_wider
获得所需的表:rsl1atfo2#
我同意@stefan的观点。你实际上有4个表,或者2个表,这取决于你怎么看它。下面是2个函数的实现,它们开始清理和格式化过程。第一个函数按行拆分dfs,第二个函数按列拆分它们。之后,格式化、清理和合并dfs到1中就更容易了。
输出: