gpt4 book ai didi

r - cbind 转换因子到数字

转载 作者:行者123 更新时间:2023-12-05 00:20:39 26 4
gpt4 key购买 nike

不知道为什么会这样。我有一个数据框 df2使用以下变量:

          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 的新列-- 我将在哪里存储一个值是伤害还是致命。

但是,当我在 df2$EVTYPE 上使用 cbind 时,它将因子转换为数字,如下所示。
    > 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,] 已从 TORNADO 更改为 834。

关于为什么会发生这种情况的任何提示?

最佳答案

我们是 cbind ing 向量,输出将是 matrix . matrix只能装一个class .因此,如果有任何非数字向量,它会将整个矩阵转换为“字符”,因为第一列已经是 factor ,我们得到该因素的数值水平。最好使用 data.frame

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

或者我们可以使用 bind_colsdata_frame来自 dplyr

关于r - cbind 转换因子到数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33872034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com