在r中将列从因子更改为整数时,值会发生变化

  • 本文关键字:整数 变化 r dataframe
  • 更新时间 :
  • 英文 :


我有一个df,它有一列,当我从csv读取if时,它是一个因子。

Month_considered   pct ATC_Count 
<fct>            <dbl> <fct>     
1 Apr-17            54.9 198,337   
2 May-17            56.4 227,681   
3 Jun-17            58.0 251,664   
4 Jul-17            57.7 251,934   
5 Aug-17            55.5 259,617   
6 Sep-17            55.7 245,588   
7 Oct-17            56.6 247,051   
8 Nov-17            57.6 256,375   
9 Dec-17            56.9 277,784   
10 Jan-18            56.7 272,818   
11 2/1/18            59.1 266,277.00
> sapply(ab, class)
Month_considered              pct        ATC_Count 
"factor"        "numeric"         "factor"

当我尝试将ATC_Count转换为整数时,我会得到以下输出,其中ATC_Count显示不同的值。这里可能出了什么问题。

ab$ATC_Count <- as.integer(ab$ATC_Count)
Month_considered   pct ATC_Count
<fct>            <dbl>     <int>
1 Apr-17            54.9     36571
2 May-17            56.4     37325
3 Jun-17            58.0     37780
4 Jul-17            57.7     37781
5 Aug-17            55.5     37885
6 Sep-17            55.7     37682
7 Oct-17            56.6     37714
8 Nov-17            57.6     37855
9 Dec-17            56.9     38099
10 Jan-18            56.7     38060
11 2/1/18            59.1     37990

"ATC_Count"中有一个,,可以用sub删除

as.integer(sub(",", "", ab$ATC_Count))

或使用tidyverse

library(tidyverse)
ab %>% 
mutate(ATC_Count = as.integer(str_remove(ATC_Count, ",")))

或使用readr中的parse_number

ab %>%
mutate(ATC_Count = parse_number(ATC_Count))

关于factorinteger转换时的不同数字,我们得到的是整数存储值。通常的转换方式是

as.integer(as.character(ab$ATC_Count))

这在这里不起作用,因为在列值内存在CCD_

最新更新