R中的操纵因子列表

时间:2014-09-06 23:44:28

标签: r vector apply lapply

我在 R 中有一个向量,它是一个因子列表,256个nfl队列表。我需要改变#34; Washington Redskins"进入" WAS"或者"新英格兰爱国者队"进入" NE"。这类问题的最佳技术是什么?我确信这很容易,所以不要打扰我。

4 个答案:

答案 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", ...)

会更改标签。