首页 > 解决方案 > 对来自不同行的相似字符串进行分组并计算 R 中的总数

问题描述

我有一个看起来像这样的表:

联盟 团队 教练
夏天 Rangers1-北 蒂芙尼
冬天 游骑兵2 詹姆士
夏天 Ranger1-南 蒂芙尼

我需要执行某种 group_by 并将相似的行(Rangers1-North,Ranger1-South)组合成一个完整的行,以获得正确的教练和联赛,总数量的球队看起来像这样:表格子集. 请看下面的图片

在此处输入图像描述

所以它本质上是一个数据透视表。我正在为此苦苦挣扎。任何帮助将不胜感激,我的 R 技能很少。

标签: rpivot-table

解决方案


数据是否足够干净以保证 Rangers1-North 和 Rangers1-South 始终拥有相同的教练?是否总是存在团队-其他信息?

如果是这样(这比必要的要冗长得多,但看起来你是 R 的新手,所以希望它更容易理解)


library(data.table)

#Your data
data <- data.table(league = c("summer", "winter", "summer"), 
                   team = c("Rangers1-North", "Rangers2", "Rangers1-South"),
                   coach = c("Tiffany", "James", "Tiffany"))

#Creates the team name
data[, team_subset := gsub("(.*)-.*", "\\1", team)]

#Generates your count variable
data[, count := .N, by=c("team_subset", "league", "coach")]

#For non-subset firms, delete subset
data[count == 1, team_subset := ""]

#Subsets the data and retains unique items
tmp <- unique(data[count > 1], by=c("team_subset", "league", "coach"))
tmp[, `:=` (team = team_subset, team_subset = "")]

#Recombine and sort
data <- rbind(data, tmp)
setorder(data, team, league)
data <- data[order(team), .(team, team_subset, league, coach, count)]


推荐阅读