【问题标题】:Value changes while changing a column from factor to integer in r将列从因子更改为r中的整数时值发生变化
【发布时间】:2018-07-11 02:54:21
【问题描述】:

我有一个 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

【问题讨论】:

  • 使用as.integer(as.character(ab$ATC_Count)顺便说一句,ATC_Count中有一个,,所以你可能需要删除它并转换它as.integer(sub(",", "", ab$ATC_Count))或使用tidyverseab %&gt;% mutate(ATC_Count = as.integer(str_remove(ATC_Count)))跨度>
  • 使用as.numeric(gsub(',',"",ab$ATC_Count))
  • 当我执行 as.integer(as.character(ab$ATC_Count)) 时,我得到了强制引入的 NAs
  • 是的,因为有,请阅读完整评论

标签: r dataframe


【解决方案1】:

“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))

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

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

这在此处不起作用,因为列值中有,

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多