Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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 - Fatal编程技术网

R 找出与标准的偏差并绘制一张图表

R 找出与标准的偏差并绘制一张图表,r,R,我原以为这样做会更容易,但我有点困了,也许今天太累了。让我们从一个数据开始: 这是一个我称之为参考的数据: > dput(data_db)) structure(list(`Name` = c("Mark", "Taylor", "Greg", "Matt", "Jose", "Tito"), `App` = c(13.8,

我原以为这样做会更容易,但我有点困了,也许今天太累了。让我们从一个数据开始:

这是一个我称之为参考的数据:

> dput(data_db))
structure(list(`Name` = c("Mark", "Taylor", "Greg", 
                               "Matt", "Jose", "Tito"), `App` = c(13.8, 
                                                                                        5.8, 5.7, 7, 2.2, 0.8)), .Names = c("Name", "App"
                                                                                        ), row.names = c(1L, 2L, 3L, 4L, 5L, 7L), class = "data.frame")
这是只有两列的数据框,我想使用存储在该数据中的值作为参考

这是“实验”数据:

数据以数字向量的形式存储。正如我们可以看到的,这个向量中的名称与来自参考数据的名称相似。来自不同实验的值由
和实验次数分开。正如你所看到的,每个变量的实验次数是不同的

我想在所有实验中找出与参考值最接近的值,并以“回归”的形式绘制它。请看附件中的示例“用油漆绘制”

红线显示供参考的数据。蓝色圆点代表在其中一个实验中确定的每个名称的最接近值。当然,这里有比提供的数据更多的点。这只是一个例子


希望您理解我想在这里展示的内容,也许您想提供任何其他方式来可视化它。

首先,您需要获得与实验对应的名称:

names_vec_app <- sub("([^_])_\\d+", "\\1", names(vec_app))

为什么对你来说这么容易。。。令人惊叹的。Thx.@ShaxiLiver有时候,当你不是需要完成事情的人时,事情会变得更容易;-)很高兴我能帮忙:-)
names_vec_app <- sub("([^_])_\\d+", "\\1", names(vec_app))
diff_app_ref <- vec_app-data_db$App[match(names_vec_app, data_db$Name)]
absminbyname <- aggregate(diff_app_ref ~ names_vec_app, FUN=function(x) x[which.min(abs(x))])
absminbyname
#  names_vec_app absdiff_app_ref
#1          Greg     -1.102506399
#2          Jose     -0.004124355
#3          Mark     -2.551397975
#4          Matt     12.744122659
#5        Taylor     -2.817251373
#6          Tito     15.770553322
plot(1:nrow(absminbyname), absminbyname$diff_app_ref, axes=FALSE, xlab="names", ylab="min difference", pch=19, col="blue", ylim=c(floor(min(absminbyname$diff_app_ref)), ceiling(max(absminbyname$diff_app_ref))))
abline(h=0, col="red")
axis(2, at=floor(min(absminbyname$diff_app_ref)): ceiling(max(absminbyname$diff_app_ref)))
axis(1, at=1:nrow(absminbyname), labels=absminbyname$names_vec_app)