通过col组合多个数据集

问题描述 投票:0回答:1

我想要合并多个数据集,这样我就可以拥有相同的基因 snp,但对于其他值,它们是不同的。

 combined_data <- Reduce(function(x, y) merge(x, y, by = c("SNP", "Gene"), all = TRUE), 
                            list(dt_cluster0, dt_cluster1))

这是输入:

> dt_cluster0[dt_cluster0$SNP == "chr1_11999355_C_T",]

    SNP                Gene           BETA_cluster_0 SE_cluster_0
1: chr1_11999355_C_T ENSG00000116688   -0.001939400  0.000476767
2: chr1_11999355_C_T ENSG00000116688   -0.000307912  0.000337024

> dt_cluster1[dt_cluster1$SNP == "chr1_11999355_C_T",]

        SNP            Gene           BETA_cluster_1 SE_cluster_1
1: chr1_11999355_C_T ENSG00000116688   -0.001939400  0.000476767
2: chr1_11999355_C_T ENSG00000116688   -0.000307912  0.000337024

我得到的输出是这样的:

combined_data[combined_data$SNP == "chr1_11999355_C_T",]

SNP                    Gene BETA_cluster_0 SE_cluster_0 BETA_cluster_1 SE_cluster_1

1: chr1_11999355_C_T ENSG00000116688   -0.001939400  0.000476767   -0.001939400  0.000476767
2: chr1_11999355_C_T ENSG00000116688   -0.001939400  0.000476767   -0.000307912  0.000337024
3: chr1_11999355_C_T ENSG00000116688   -0.000307912  0.000337024   -0.001939400  0.000476767
4: chr1_11999355_C_T ENSG00000116688   -0.000307912  0.000337024   -0.000307912  0.000337024

但我想要的是更多:

SNP                Gene             BETA_cluster_0 SE_cluster_0.  BETA_cluster_1  SE_cluster_1 
chr1_11999355_C_T ENSG00000116688   -0.001939400  0.000476767    -0.001939400    0.000476767       
chr1_11999355_C_T ENSG00000116688   -0.000307912  0.000337024.  -0.000307912     0.000337024     

我不想拥有所有可能的组合。有人有什么建议吗?

r
1个回答
0
投票

您需要将 first

data.frame()
作为
init=
参数传递给Reduce,否则它会在第一次迭代时与自身合并:

df1 <- expand.grid(G1 = LETTERS[1:3],
                   G2 = letters[4:5])
df3 <- df2 <- df1
df1$x1 <- rnorm(6)
df1$y1 <- rnorm(6, 10)
df2$x2 <- rnorm(6, 100)
df2$y2 <- rnorm(6, 1000)
df3$x3 <- rnorm(6, 500)
df3$y3 <- rnorm(6, 5000)

Reduce(\(x, y) merge(x, y, all = TRUE),
       init = df1,
       list(df2, df3))
  G1 G2          x1        y1        x2        y2       x3       y3
1  A  d -0.07976726  8.701670 102.15779 1000.8781 501.3432 4999.853
2  A  e  0.57344392 11.062822 103.35576  998.5833 499.8316 4998.851
3  B  d -0.18535187  9.879264 100.08262  999.5475 500.9023 4999.267
4  B  e -0.29633928 10.387066  98.59180 1001.3854 500.2781 5001.993
5  C  d  1.15221959 10.391293  99.72066  999.7736 500.1438 4998.851
6  C  e -0.13812669 11.219912  98.96838 1000.9077 499.3424 4999.576
© www.soinside.com 2019 - 2024. All rights reserved.