我在 R 中有一个向量,它是一个因子列表,256个nfl队列表。我需要改变#34; Washington Redskins"进入" WAS"或者"新英格兰爱国者队"进入" NE"。这类问题的最佳技术是什么?我确信这很容易,所以不要打扰我。
答案 0 :(得分:2)
您可以从网页上阅读首字母缩略词,并将团队名称与您的名称相匹配。
以下是一个例子。
library(XML)
tab <- readHTMLTable("http://sportsdelve.wordpress.com/abbreviations/")[[1]]
head(tab)
# V1 V2
# 1 ARZ Arizona Cardinals
# 2 ATL Atlanta Falcons
# 3 BAL Baltimore Ravens
# 4 BALC Baltimore Colts
# 5 BCLT Baltimore Colts (1950)
# 6 BALCLT Baltimore Colts (AAFC)
您可以使用正则表达式匹配来找到您的团队......
tab[grepl("WAS|NE", tab[[1]]), ]
# V1 V2
# 38 NE New England Patriots
# 58 WAS Washington Redskins
答案 1 :(得分:0)
一种方法是使用字典,即具有每个全名和每个短名称的文件。然后,您可以使用全名作为匹配的ID来匹配此文件到您的全名。
示例:
full.names <- data.frame(full = c("wash", "wash", "denv", "denv", "wash")) ## needs to be a data frame in order for plyr::join to work
dic <- data.frame(full = c("wash", "denv"), short = c("ww", "dd")) ## the dictionary; one row per unique name
matched <- plyr::join(x = full.names, y = dic, by = "full") ## using join from the plyr package
输出:
full short
1 wash ww
2 wash ww
3 denv dd
4 denv dd
5 wash ww
答案 2 :(得分:0)
'merge'命令也有效:(在这里使用Chaconne的数据)
full.names <- data.frame(full = c("wash", "wash", "denv", "denv", "wash"))
dic <- data.frame(full = c("wash", "denv"), short = c("ww", "dd"))
merge(full.names,dic)
full short
1 denv dd
2 denv dd
3 wash ww
4 wash ww
5 wash ww
答案 3 :(得分:0)
您可以直接更改级别
levels(team)
将列出分配给您的因子的级别的顺序
levels(team) <- c("ARZ","ATL", ...)
会更改标签。