【发布时间】:2015-07-26 13:16:46
【问题描述】:
我有一个 MySQL 数据库,其中包含以下格式的许多大表:
mysql> select * from Table1 limit 2;
+-------+----------+-------------+
| chrom | site | methylation |
+-------+----------+-------------+
| 1 | 10003581 | 76 |
| 1 | 10003584 | 0 |
+-------+----------+-------------+
我想在 R 中创建一个大型合并表,其中包含每个表的甲基化值覆盖的所有位点。例如,如果我有 4 个 mysql 表,则 R 数据框将包含以下列:
chrom site table1 table2 table3 table4
到目前为止我有:
library(RMySQL)
#Open database
mydb = dbConnect(MySQL(), user='root', password='', dbname='DataBase')
#Create function to get values
GetVal <- function(TableName, ColumnName){
rs = dbSendQuery(mydb, paste("SELECT chrom, site, methylation FROM ", TableName))
data = fetch(rs, n=-1)
res <- rename(data, c("chrom" = "Chr", "site" = "start", "methylation" = ColumnName))
return(res)
}
Table1 <- GetVal("Table1", "Table1")
Table2 <- GetVal("Table2", "Table2")
Table3 <- GetVal("Table3", "Table3")
Table4 <- GetVal("Table4", "Table4")
然后我会将所有表格合并在一起。但是我认为应该有一种更快、更有效的方法来做到这一点。
【问题讨论】:
-
你有什么理由不通过使用一些连接在 SQL 中执行此操作吗??
-
@KenYeoh 是的,这就是我的想法,但不确定如何执行此操作并在 R 中获得结果