R 在一个y值中生成多个x值的数据集

R 在一个y值中生成多个x值的数据集,r,dataset,scatter-plot,R,Dataset,Scatter Plot,我有一个相关数据集,如下所示: V1 V2 R2 1 2 0.4 1 3 0.5 3 5 0.3 V R2 1 0.4 2 0.4 1 0.5 2 0.5 3 0.5 3 0.3 4 0.3 5 0.3 我想把它转换成一个两列的数据,这样我就可以在一个y(R2列)中有多个x(

我有一个相关数据集,如下所示:

V1    V2    R2    
 1    2    0.4    
 1    3    0.5    
 3    5    0.3    
V    R2    
1    0.4    
2    0.4        
1    0.5    
2    0.5    
3    0.5    
3    0.3    
4    0.3    
5    0.3    
我想把它转换成一个两列的数据,这样我就可以在一个y(R2列)中有多个x(V列)来进行散点绘制。它看起来是这样的:

V1    V2    R2    
 1    2    0.4    
 1    3    0.5    
 3    5    0.3    
V    R2    
1    0.4    
2    0.4        
1    0.5    
2    0.5    
3    0.5    
3    0.3    
4    0.3    
5    0.3    

如何在R中执行此操作?

在tidyverse中,您可以使用
purrr::map2
创建所需向量的列表列,在每对起点和终点上迭代
seq
,然后使用
tidyr::unest
展开:

df%transmute(V=map2(V1,V2,seq),R2)%>%unest()
#>R2 V
#> 1 0.4 1
#> 2 0.4 2
#> 3 0.5 1
#> 4 0.5 2
#> 5 0.5 3
#> 6 0.3 3
#> 7 0.3 4
#> 8 0.3 5
在base R中,没有简单的
unnest
等价物,因此更容易使用
Map
(多元
lappy
,大致相当于上面的
purr::map2
)来构建数据帧列表,其中包含
R2
值(由
data.frame
回收),然后是
do.call>(rbind,…)
ed到单个数据帧中:

do.call(rbind,
Map(函数(v1,v2,r2){data.frame(V=v1:v2,r2=r2)},
df$V1、df$V2、df$R2))
#>V R2
#> 1 1 0.4
#> 2 2 0.4
#> 3 1 0.5
#> 4 2 0.5
#> 5 3 0.5
#> 6 3 0.3
#> 7 4 0.3
#> 8 5 0.3

查看每种产品的中间产品,了解它们的工作原理。

这里有一个使用
数据的选项。表

library(data.table)
setDT(df1)[, .(V = V1:V2, R2), by = .(grp = 1:nrow(df1))][, grp := NULL][]
#   V  R2
#1: 1 0.4
#2: 2 0.4
#3: 1 0.5
#4: 2 0.5
#5: 3 0.5
#6: 3 0.3
#7: 4 0.3
#8: 5 0.3

如何从输入中的6个ID中得到输出中的8个ID?例如,第一个数据表明1和2之间的相关性为0.4。然后我想从中产生两个数据,分别为(1,0.4)和(2,0.4)。示例中我的x轴从1到5。哦……所以在第二行中,1/3表示1到3,因此为什么在输出中得到1,2,3。我现在同意你的看法。