【发布时间】:2017-08-29 19:45:16
【问题描述】:
在下面的数据中,每一行包括第一个实体(“Country1”)和第二个实体(“Country2”)。我想要一个变量,用 (Country1,Country2) = (Country1,Country2) 或 (Country1,Country2) = (Country2,Country1) 对行进行分组,即常见元素但忽略排列。
请对下面的脚本发表评论,该脚本似乎有效,但使用 by_row() 做了一些我不理解的事情。
library(tidyverse)
pairs0 <- read.table(header=TRUE, text="
Country1 Country2
A B
B A
A C
")
## What I want to have:
## Country1 Country2 pairID
## A B 1
## B A 1
## A C 2
pairs1 <- by_row(pairs0,.collate="cols",
..f=function(this_row) {
this_row[1,c("Country1","Country2")] %>% unlist %>% sort %>% paste
}
)
pairs2 <- mutate(pairs1,pairID = group_indices(pairs1,.out1,.out2))
【问题讨论】:
-
我的回答对你有帮助吗?请考虑接受它(我的答案左侧的复选标记)
标签: r group-by tidyverse dplyr