Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将逗号分隔的小数从字符转换为数字_R_Numeric - Fatal编程技术网

R 将逗号分隔的小数从字符转换为数字

R 将逗号分隔的小数从字符转换为数字,r,numeric,R,Numeric,为了我的考试,我必须在r中建立一些散点图。我创建了一个包含4个变量的数据框。有了这个数据框,我想在散点图中添加回归线 我的数据帧的名称是alle。 变量名为:demo、tot、besch、usd 使用这段代码,我尝试对回归线进行划线,但得到以下结果: reg1<- lm(tot~demo, data=alle) 以下是alle的结构 str(alle) 'data.frame': 11 obs. of 4 variables: $ demo : chr "498.300.775

为了我的考试,我必须在r中建立一些散点图。我创建了一个包含4个变量的数据框。有了这个数据框,我想在散点图中添加回归线

我的数据帧的名称是alle。 变量名为:demo、tot、besch、usd

使用这段代码,我尝试对回归线进行划线,但得到以下结果:

reg1<- lm(tot~demo, data=alle)
以下是alle的结构

str(alle)
'data.frame':   11 obs. of  4 variables:
 $ demo : chr  "498.300.775" "500.297.033" "502.090.235" "503.170.618" ...
 $ tot  : Factor w/ 11 levels "4.846.423","4.871.049",..: 1 3 4 5 2 8 7 6 10 9 ...
 $ besch: Factor w/ 9 levels "68,4","68,6",..: 5 7 3 2 2 1 1 4 6 8 ...
 $ usd  : Factor w/ 44 levels "0,68434","0,72584",..: 26 30 29 23 28 22 24 25 15 14 ...

尝试使用将列演示转换为数字

alle$demo <- as.numeric(as.character(alle$demo))
它将列转换为数字,但现在行已满NAs

我认为所有列都必须是数字。 如何将所有4列转换为数值并最终绘制回归线

数据:

>海德尔,6岁 贝施美元 1 498.300.775 4.846.423 69,8 1,3705 2 500.297.033 4.891.934 70,3 1,4708 3 502.090.235 4.901.358 69,0 1,3948 4 503.170.618 4.906.313 68,6 1,3257 5 502.964.837 4.871.049 68,6 1,3920 6 504.047.964 5.010.371 68,4 12848


谢谢

试着分两步来做。首先去掉点,然后用小数点替换逗号,并强制使用数字

alle[] <- lapply(alle, function(x) gsub("\\.", "", x))
alle[] <- lapply(alle, function(x) as.numeric(sub(",", ".", x)))
使用dplyr:


你能用dputheadAllege,10添加你的数据吗。还有什么是寮屋区?检查我在第二部分下面的答案,看看是否有帮助。您共享的数据有NAs,这是原始数据吗?尝试过,但出现以下错误:````>alle[]alle[]@IceCreamToucan是的,谢谢,更正。我没有测试它,因为问题中没有数据。@melooo请看我之前的评论。现在拼写错误已经纠正了。错误可能已消失。我的原始数据没有NAs。但在我尝试了第一个答案中的技巧后,我在前两列中得到了NAs。请使用原始数据,而不是答案中更改的数据。applyalle,2,functionx as.numericas.CharacterSub,,,,,,x使用此选项,我对数据grameresult没有任何更改。在控制台上,结果似乎很好。但我的数据帧alle没有变化。如何将此结果保存到数据帧中?stralle'data.frame':11 obs。共4个变量:$demo:chr 498.300.775 500.297.033 502.090.235 503.170.618…$总额:chr 4.846.423 4.891.934 4.901.358 4.906.313…$贝什:数字69.870.36968.668.668.468.469.270.171.1…$美元:数字1.37 1.47 1.39 1.33 1.39。。。不是所有的代码都是数字的:但这段代码对我帮助很大
alle[] <- lapply(alle, function(x) gsub("\\.", "", x))
alle[] <- lapply(alle, function(x) as.numeric(sub(",", ".", x)))
alle[] <- lapply(alle, function(x){
  as.numeric(sub(",", ".", gsub("\\.", "", x)))
})
library(dplyr)
alle %>% 
  mutate_all(as.character) %>% 
  mutate_at(c("besch","usd"),function(x) as.numeric(as.character(gsub(",",".",x)))) ->alle
    demo       tot besch    usd
1 498.300.775 4.846.423  69.8 1.3705
2 500.297.033 4.891.934  70.3 1.4708
3 502.090.235 4.901.358  69.0 1.3948
4 503.170.618 4.906.313  68.6 1.3257
5 502.964.837 4.871.049  68.6 1.3920
6 504.047.964 5.010.371  68.4 1.2848