如何将chr转换为数字

如何将chr转换为数字,r,type-conversion,numeric,chr,R,Type Conversion,Numeric,Chr,我是r的新手,我先用这个表打开文件 df<- read.csv("geral_modelo_inadimplencia_2.csv",sep=";",stringsAsFactors = FALSE) 如何将chr转换为数字 Saldo.Rotativo A.Vista Parcelado Saque 1 dez/16 2.919.869.506,96 6.364.901.107,55 463.677.827,46

我是r的新手,我先用这个表打开文件

df<- read.csv("geral_modelo_inadimplencia_2.csv",sep=";",stringsAsFactors = FALSE)
如何将chr转换为数字

   Saldo.Rotativo            A.Vista        Parcelado          Saque
1  dez/16  2.919.869.506,96   6.364.901.107,55   463.677.827,46     729.185,18 
2  dez/17  2.007.351.784,18   6.831.919.805,09   780.093.428,86   2.817.814,72 
3  dez/18  1.944.752.969,68   7.458.695.484,62   542.074.530,21   1.885.633,29 
4  jan/19  1.991.796.619,57   7.371.837.099,11   540.893.516,33   2.058.371,60 
5  fev/19  2.121.650.035,30   6.967.735.692,25   562.211.487,01   2.132.249,61 
6  mar/19  2.062.475.653,11   6.900.028.117,67   575.861.976,61   2.100.849,74 
7  abr/19  2.089.793.039,24   6.945.593.710,28   583.181.387,89   2.090.951,69 
8  mai/19  2.078.700.800,99   7.146.597.703,16   612.184.578,96   2.132.951,04 
9  jun/19  2.239.390.093,82   6.851.118.033,80   618.844.690,37   1.764.866,10 
10 jul/19  2.121.263.409,38   7.196.087.606,84   629.995.715,52   3.945.650,40 
11 ago/19  2.173.187.280,54   7.089.675.942,22   624.808.459,45   6.341.527,95 
12 set/19  2.285.571.063,90   7.111.228.186,19   617.840.220,61   6.143.505,16 
13 out/19  2.193.401.889,85   7.263.912.266,04   622.821.392,86   7.253.169,67 
14 nov/19  2.281.061.211,60   7.240.713.335,11   611.161.428,40   7.484.398,11 
15 dez/19  2.212.531.321,45   7.892.016.606,72   597.916.084,63   6.464.980,78 

我们可以使用
str\u remove\u all

library(dplyr)
library(stringr)
df <-  df %>% 
       mutate_at(-1, ~ as.numeric(str_replace(str_remove_all(., 
              '\\.'), ',', '.')))

df
#     date Saldo.Rotativo    A.Vista Parcelado     Saque
#1  dez/16     2919869507 6364901108 463677827  729185.2
#2  dez/17     2007351784 6831919805 780093429 2817814.7
#3  dez/18     1944752970 7458695485 542074530 1885633.3
#4  jan/19     1991796620 7371837099 540893516 2058371.6
#5  fev/19     2121650035 6967735692 562211487 2132249.6
#6  mar/19     2062475653 6900028118 575861977 2100849.7
#7  abr/19     2089793039 6945593710 583181388 2090951.7
#8  mai/19     2078700801 7146597703 612184579 2132951.0
#9  jun/19     2239390094 6851118034 618844690 1764866.1
#10 jul/19     2121263409 7196087607 629995716 3945650.4
#11 ago/19     2173187281 7089675942 624808459 6341528.0
#12 set/19     2285571064 7111228186 617840221 6143505.2
#13 out/19     2193401890 7263912266 622821393 7253169.7
#14 nov/19     2281061212 7240713335 611161428 7484398.1
#15 dez/19     2212531321 7892016607 597916085 6464980.8   



str(df)
#'data.frame':  15 obs. of  5 variables:
# $ date          : chr  "dez/16" "dez/17" "dez/18" "jan/19" ...
# $ Saldo.Rotativo: num  2.92e+09 2.01e+09 1.94e+09 1.99e+09 2.12e+09 ...
# $ A.Vista       : num  6.36e+09 6.83e+09 7.46e+09 7.37e+09 6.97e+09 ...
# $ Parcelado     : num  4.64e+08 7.80e+08 5.42e+08 5.41e+08 5.62e+08 ...
# $ Saque         : num  729185 2817815 1885633 2058372 2132250 ...
数据
df不幸的是,R似乎没有自动检测不同语言环境的基本函数,因此我们需要一对
gsub
s


dat[,-1]
as.numeric(sub(“,”,“,”,gsub(“\\.”,”,“2.919.869.506,96”))
akrun,这是一种语言环境。。。一些国家使用
表示千位分隔符,使用
表示十进制。Marilivia Melo de sousa,您是否意识到StackExchange网站有一种礼仪,即如果答案解决了问题,您应该这样做?这样做不仅给回答者提供了一些观点,也为有类似问题的读者提供了一些结尾。虽然你只能接受一个答案,但你可以选择增加你认为有帮助的选票。(如果仍然存在问题,您可能需要编辑问题并提供更多详细信息。)(您之前的两个问题都有可用的答案。)当然。我认为这是对你的一个“提示”(这是一个很好的建议),但我可以把你的名字从上面去掉。
library(dplyr)
library(stringr)
df <-  df %>% 
       mutate_at(-1, ~ as.numeric(str_replace(str_remove_all(., 
              '\\.'), ',', '.')))

df
#     date Saldo.Rotativo    A.Vista Parcelado     Saque
#1  dez/16     2919869507 6364901108 463677827  729185.2
#2  dez/17     2007351784 6831919805 780093429 2817814.7
#3  dez/18     1944752970 7458695485 542074530 1885633.3
#4  jan/19     1991796620 7371837099 540893516 2058371.6
#5  fev/19     2121650035 6967735692 562211487 2132249.6
#6  mar/19     2062475653 6900028118 575861977 2100849.7
#7  abr/19     2089793039 6945593710 583181388 2090951.7
#8  mai/19     2078700801 7146597703 612184579 2132951.0
#9  jun/19     2239390094 6851118034 618844690 1764866.1
#10 jul/19     2121263409 7196087607 629995716 3945650.4
#11 ago/19     2173187281 7089675942 624808459 6341528.0
#12 set/19     2285571064 7111228186 617840221 6143505.2
#13 out/19     2193401890 7263912266 622821393 7253169.7
#14 nov/19     2281061212 7240713335 611161428 7484398.1
#15 dez/19     2212531321 7892016607 597916085 6464980.8   



str(df)
#'data.frame':  15 obs. of  5 variables:
# $ date          : chr  "dez/16" "dez/17" "dez/18" "jan/19" ...
# $ Saldo.Rotativo: num  2.92e+09 2.01e+09 1.94e+09 1.99e+09 2.12e+09 ...
# $ A.Vista       : num  6.36e+09 6.83e+09 7.46e+09 7.37e+09 6.97e+09 ...
# $ Parcelado     : num  4.64e+08 7.80e+08 5.42e+08 5.41e+08 5.62e+08 ...
# $ Saque         : num  729185 2817815 1885633 2058372 2132250 ...
df[-1] <- lapply(df[-1], function(x) 
           sub(",",  ".", gsub(".",  "",  x, fixed = TRUE)))
df <- type.convert(df, as.is = TRUE)
df <- structure(list(date = c("dez/16", "dez/17", "dez/18", "jan/19", 
"fev/19", "mar/19", "abr/19", "mai/19", "jun/19", "jul/19", "ago/19", 
"set/19", "out/19", "nov/19", "dez/19"), Saldo.Rotativo = c("2.919.869.506,96", 
"2.007.351.784,18", "1.944.752.969,68", "1.991.796.619,57", "2.121.650.035,30", 
"2.062.475.653,11", "2.089.793.039,24", "2.078.700.800,99", "2.239.390.093,82", 
"2.121.263.409,38", "2.173.187.280,54", "2.285.571.063,90", "2.193.401.889,85", 
"2.281.061.211,60", "2.212.531.321,45"), A.Vista = c("6.364.901.107,55", 
"6.831.919.805,09", "7.458.695.484,62", "7.371.837.099,11", "6.967.735.692,25", 
"6.900.028.117,67", "6.945.593.710,28", "7.146.597.703,16", "6.851.118.033,80", 
"7.196.087.606,84", "7.089.675.942,22", "7.111.228.186,19", "7.263.912.266,04", 
"7.240.713.335,11", "7.892.016.606,72"), Parcelado = c("463.677.827,46", 
"780.093.428,86", "542.074.530,21", "540.893.516,33", "562.211.487,01", 
"575.861.976,61", "583.181.387,89", "612.184.578,96", "618.844.690,37", 
"629.995.715,52", "624.808.459,45", "617.840.220,61", "622.821.392,86", 
"611.161.428,40", "597.916.084,63"), Saque = c("729.185,18", 
"2.817.814,72", "1.885.633,29", "2.058.371,60", "2.132.249,61", 
"2.100.849,74", "2.090.951,69", "2.132.951,04", "1.764.866,10", 
"3.945.650,40", "6.341.527,95", "6.143.505,16", "7.253.169,67", 
"7.484.398,11", "6.464.980,78")), class = "data.frame", row.names = c("1", 
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", 
"14", "15"))