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

时间:2018-07-11 02:54:21

标签: r dataframe

我有一个df,其中有一个列,这是从csv读取时的一个因素。

   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

1 个答案:

答案 0 :(得分:2)

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

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

或使用tidyverse

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

或者使用parse_number中的readr

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

关于将factor转换为integer时的不同数字,它是我们获得的整数存储值。转换的常用方法是

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

在此处不起作用,因为列值中包含,