我有一个 Dataframe ,看起来像这样:
CityFrom CityTo Count
Paris Lyon 2
Lyon Paris 4
London Manchester 5
Manchester London 6
我想在每一行中添加2个额外的列,这将为我提供一个城市名称,无论目的地和起点如何排序:
所以,作为一个例子,里昂-巴黎和巴黎-里昂在这种情况下是相同的。
我最初的想法是:
1.使用paste
合并2列,即CityFrom和CityTo
sort
按字母顺序排列split
它们在2列中。
作为一个用例,巴黎作为CityFrom,里昂作为CityTo的行:paste
2列给予-“巴黎,里昂”。sort
给予输出-“里昂,巴黎”split
分为2列,其中里昂为CityCodeBidirectionalFrom,巴黎为CityCodeBidirectionalto。
我无法实现上述逻辑。
4条答案
按热度按时间cclgggtu1#
实际上你不需要“排序”,只需要比较每一对。你需要做两次,翻转条件从一对中得到另一个:
(as你没有提供任何测试数据,我的代码是一个未经测试的伪代码,而不是一个复制粘贴解决方案…)
gk7wooem2#
另一个选项是使用
pmin()
和pmax()
。fkvaft9z3#
对于tidyverse解决方案,我们可以将它们放入一个列表中,对其进行排序,然后将它们解嵌套。
数据:
6fe3ivhb4#
您可以对值进行排序,而不需要连接,如下所示: