2015-11-23 4 views
3

Не знаете, почему это происходит. У меня есть dataframe df2 с ниже переменных:Коэффициент преобразования cbind в числовой

  EVTYPE TOTAL_FATALITIES TOTAL_INJURIES 
      (fctr)   (dbl)   (dbl) 
1  TORNADO    5633   91346 
2 EXCESSIVE HEAT    1903   6525 
3 FLASH FLOOD    978   1777 
4   HEAT    937   2100 
5  LIGHTNING    816   5230 
6  TSTM WIND    504   6957 

    > df2$TOTAL_FATALITIES 

[1] 5633 1903 978 937 816 504 470 368 248 224 206 204 172 160 133 127 103 101 101 

    > df2$EVTYPE 

[1] TORNADO   EXCESSIVE HEAT FLASH FLOOD  HEAT    LIGHTNING   
[6] TSTM WIND   FLOOD    RIP CURRENT  HIGH WIND   AVALANCHE   
[11] WINTER STORM  RIP CURRENTS  HEAT WAVE   EXTREME COLD  THUNDERSTORM WIND 
[16] HEAVY SNOW  STRONG WIND  BLIZZARD   HIGH SURF   
985 Levels: HIGH SURF ADVISORY COASTAL FLOOD FLASH FLOOD LIGHTNING ... WND 

    > df2$TOTAL_INJURIES 

[1] 91346 6525 1777 2100 5230 6957 6789 232 1137 170 1321 297 309 231 1488 1021 
[17] 280 805 152 

Я пытаюсь создать новый столбец с именем SevType - где я буду хранить, является ли значение либо травмы или летальному исходу.

Однако, когда я использую cbind на df2$EVTYPE, он преобразует коэффициент в число, как показано ниже.

> head(cbind(Event=df2$EVTYPE,Total = df2$TOTAL_INJURIES,Severity="INJURE")) 
    Event Total Severity 
[1,] "834" "91346" "INJURE" 
[2,] "130" "6525" "INJURE" 
[3,] "153" "1777" "INJURE" 
[4,] "275" "2100" "INJURE" 
[5,] "464" "5230" "INJURE" 
[6,] "856" "6957" "INJURE" 

Обратите внимание, что Event в [1,] изменился с ТОРНАДО до 834.

Любые намеки на то, почему это происходит?

ответ

4

Мы являемся cbind Входящими векторами, а выход будет matrix. matrix может содержать только один class. Итак, если есть какой-либо вектор, который не является числовым, он преобразует всю матрицу в «символ», и поскольку первый столбец уже является factor, мы получаем числовые уровни этого коэффициента. Лучше было бы использовать data.frame

data.frame(Event=df2$EVTYPE,Total = df2$TOTAL_INJURIES,Severity="INJURE") 

Или мы можем использовать bind_cols или data_frame из dplyr

Смежные вопросы