我现在正在处理 R 中的一个表,如下所示:
A B 09-2016
B A 09-2016
A C 10-2016
C A 11-2016
A B 12-2016
我尝试计算前两列中相同行值的出现次数,例如“A B”在表中出现两次,我使用以下 R 代码:
library(data.table)
dt = data.table(data)
dt[, list(Freq =.N, V3), by=list(V1,V2)]
我可以得到以下输出:
A B 2 09-2016
B A 1 09-2016
A C 1 10-2016
C A 1 11-2016
A B 2 12-2016
现在我想将反向模式的出现次数(例如“A B”和“B A”)计算为相同的值并获得以下输出:
A B 3 09-2016
B A 3 09-2016
A C 2 10-2016
C A 2 11-2016
A B 3 12-2016
我的问题是:如何更改上面的代码来处理这种情况?或者还有别的办法吗?谢谢。
最佳答案
library(data.table)
dt <- data.table(V1 = c("A", "B", "A", "C", "A"),
V2 = c("B", "A", "C", "A", "B"),
V3 = c("09-2016", "09-2016", "10-2016", "11-2016", "12-2016"))
dt[, tempvar := paste0(sort(c(V1,V2)), collapse = ""), by = 1:nrow(dt)]
dt[, freq := .N, by = tempvar][, tempvar:=NULL]
关于r - 统计两列中 ''反向''字符串匹配的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43528958/