2016-07-27 57 views
1

我正在浏览dplyr上的DataCamp类。他们让我加载'航班'数据,然后要求我创建一个名为'承运人'的新列,用他们的实际名称替换每个航空公司代码。该解决方案如下所示:将列添加到数据框并重新编码

hflights <- tbl_df(hflights) 

    names <- c("AA" = "American", "AS" = "Alaska", "B6" = "JetBlue", "CO" = "Continental", 
      "DL" = "Delta", "OO" = "SkyWest", "UA" = "United", "US" = "US_Airways", 
      "WN" = "Southwest", "EV" = "Atlantic_Southeast", "F9" = "Frontier", 
      "FL" = "AirTran", "MQ" = "American_Eagle", "XE" = "ExpressJet", "YV" = "Mesa") 

    hflights["Carrier"] <- names[hflights$UniqueCarrier] 

我想通了,如何做到这一点,而这个工作,但它并不真正清楚,我到底是什么R为这里做什么。我知道我正在给hflights数据框添加一个新列,但我不清楚R是如何(或为什么)用运营商代码替换运营商名称。

回答

3

这是一个查找表,其中使用了一个命名向量的名称来返回该向量中的值。为了提供几个例子:

提醒一下,就可以既参照索引或名称子集名为向量:

names[1:2] 
     AA   AS 
"American" "Alaska" 
names[c("AA", "AS")] 
     AA   AS 
"American" "Alaska" 

一个很好的功能是,这些引用可重复以产生扩展的矢量:

names[rep(1:2, 2)] 
     AA   AS   AA   AS 
"American" "Alaska" "American" "Alaska" 
names[rep(c("AA", "AS"), 2)] 
     AA   AS   AA   AS 
"American" "Alaska" "American" "Alaska" 

使用这种方法,有可能使用含有查找表的任一指数或查找表的名称,以产生相同的长度的矢量的矢量,但所需的值。

2

names是类型为characterstring的命名向量。这与Python字典类似,其中每个string都索引一个变量。在这种情况下,您通过运营商代码进行索引,并且该值是全名。

R中,当您为一个向量编制索引时,可以使用列表来完成。在这种情况下,您使用缩写代码索引“字典”,并返回一个列表,该列表的索引与其值相匹配。

相关问题