R附加功能

时间:2016-05-25 16:01:56

标签: r append

我正在编写一个R脚本,用于解析data.frame中列的状态缩写。然后,它使用which()函数在查找数据框中确定找到的状态缩写的索引,该数据框包含状态缩写及其对应的完整状态名称。然后,我使用找到的索引来访问完整的州名,并将其附加到名为completeList的向量中。然后,我将包含完整状态名称的向量completeList添加到新创建的列STATE_NAME下的原始数据框中。

但是,出于某种原因,completeList仅包含先前找到的索引,而不包含我期望的完整状态名称。我做错了什么?

#read in csv weather data file 
file <- read.csv(header = TRUE, file = "C:\\Users\\michael.guarino1\\Desktop\\Work\\weather\\nov_2_1976\\734677_cleaned.csv")
#read in csv state Abbreviation file
abbreviationsFile<-read.csv(header=TRUE, file="C:\\Users\\michael.guarino1\\Desktop\\Work\\weather\\stateAbbreviationMatches.csv")
#iterate through STATION_NAME and store abreviations
completeList<-c()
for(stateAbvr in file$STATION_NAME){
     addTo<-(substring(stateAbvr,(nchar(stateAbvr)-4),(nchar(stateAbvr)-3)))
     index<-which(abbreviationsFile$Abbreviation==addTo)
     addCompleteStateName<-(abbreviationsFile[index,1])
     completeList<-append(completeList, addCompleteStateName)
}
file["STATE_NAME"]<-completeList

>completeList
[1] 27 17 17 29 42 50 20 53 45 19 22 52  9 29 26 37  8 58 35

这是找到电台缩写的csv文件

STATION STATION_NAME    ELEVATION
GHCND:USC00202381   EAST JORDAN MI US   180.1
GHCND:USC00111290   CARLYLE RESERVOIR IL US 153
GHCND:USC00116661   PAW PAW 2 S IL US   274.9
GHCND:USC00228556   SUMRALL MS US   88.1
GHCND:USC00340292   ARDMORE OK US   267.9
GHCND:USC00408522   SPARTA WASTEWATER PLANT TN US   289.9
GHCND:USC00148341   VALLEY FALLS KS US  283.5
GHCND:USW00014742   BURLINGTON INTERNATIONAL AIRPORT VT US  101.2
GHCND:USC00367782   SALINA 3 W PA US    338
GHCND:USC00134142   IOWA FALLS IA US    356.9
GHCND:USC00161565   CARVILLE 2 SW LA US 9.1
GHCND:USC00421446   CITY CRK WATER PLANT UT US  1628.9
GHCND:USW00013781   WILMINGTON NEW CASTLE CO AIRPORT DE US  22.6
GHCND:USC00229400   WATER VALLEY MS US  116.1
GHCND:USC00190562   BELCHERTOWN MA US   171
GHCND:USW00094728   NEW YORK CENTRAL PARK OBS BELVEDERE TOWER NY US 40.2
GHCND:USC00060973   BURLINGTON CT US    155.4
GHCND:USC00475516   MINOCQUA WI US  484.9
GHCND:USC00286055   NEW BRUNSWICK 3 SE NJ US    38.1

这是csv文件,我们查找缩写并找到相应的完整州名

State/Possession    Abbreviation
Alabama AL
Alaska  AK
American Samoa  AS
Arizona AZ
Arkansas    AR
California  CA
Colorado    CO
Connecticut CT
Delaware    DE
District of Columbia    DC
Federated States of Micronesia  FM
Florida FL
Georgia GA
Guam    GU
Hawaii  HI
Idaho   ID
Illinois    IL
Indiana IN
Iowa    IA
Kansas  KS
Kentucky    KY
Louisiana   LA
Maine   ME
Marshall Islands    MH
Maryland    MD
Massachusetts   MA
Michigan    MI
Minnesota   MN
Mississippi MS
Missouri    MO
Montana MT
Nebraska    NE
Nevada  NV
New Hampshire   NH
New Jersey  NJ
New Mexico  NM
New York    NY
North Carolina  NC
North Dakota    ND
Northern Mariana Islands    MP
Ohio    OH
Oklahoma    OK
Oregon  OR
Palau   PW
Pennsylvania    PA
Puerto Rico PR
Rhode Island    RI
South Carolina  SC
South Dakota    SD
Tennessee   TN
Texas   TX
Utah    UT
Vermont VT
Virgin Islands  VI
Virginia    VA
Washington  WA
West Virginia   WV
Wisconsin   WI
Wyoming WY

为什么我没有获得完整的州名?

2 个答案:

答案 0 :(得分:1)

想通了

#read in csv weather data file 
file <- read.csv(header = TRUE, file = "C:\\Users\\michael.guarino1\\Desktop\\Work\\weather\\nov_2_1976\\734677_cleaned.csv")
#read in csv state Abbreviation file
abbreviationsFile<-read.csv(header=TRUE, file="C:\\Users\\michael.guarino1\\Desktop\\Work\\weather\\stateAbbreviationMatches.csv")
#iterate through STATION_NAME and store abreviations
completeList<-c()
for(stateAbvr in file$STATION_NAME){
  addTo<-(substring(stateAbvr,(nchar(stateAbvr)-4),(nchar(stateAbvr)-3)))
  index<-which(abbreviationsFile$Abbreviation==addTo)
  addCompleteStateName<-(abbreviationsFile[index,1])
  completeList<-append(completeList, toString(addCompleteStateName))
}
file["STATE_NAME"]<-completeList

该类型被强制为整数

答案 1 :(得分:0)

变量addCompleteStateName是一个因子。您可以将其转换为字符以附加标签。

#iterate through STATION_NAME and store abreviations
completeList<-c()

for(stateAbvr in file$STATION_NAME){

  addTo<-(substring(stateAbvr,(nchar(stateAbvr)-4),(nchar(stateAbvr)-3)))

  index<-which(abbreviationsFile$Abbreviation==addTo)

  addCompleteStateName<-(abbreviationsFile[index,1])

  # modified to convert addCompleteStateName to character
  completeList<-append(completeList, as.character(addCompleteStateName))

}

file["STATE_NAME"]<-completeList