1. 程式人生 > >利用R語言對資料行列轉制

利用R語言對資料行列轉制

使用軟體:R語言,mysql
使用系統:ubuntu16.04

  • 使用效果前後對比:

使用前

x1 x2 y
a A 1
b B 2
c C 3
a A 4

使用後(裡面的數值可以進行多種變換,主要是把x1,x2改為他們的交叉表

A B C
a 5(1+4) NA NA
b NA 2 NA
c NA NA 3

1.R語言與mysql的資料庫連線

下載RMysql(由於我使用的是ubuntu,所以使用RMysql):

install.packages("RMySQL")

  • 載入所需要的程輯包:
library(RMySQL)

將mysql資料匯入R:

con<-dbConnect(MySQL(),dbname="database_name",user="user_name",password="password")

匯入後,所得資料型別是資料框(data.frame)
對於RMySQL這個包,比較重要的語句有這幾個:

  • summary(con) : 用於檢視con對應的mysql資訊
  • dbListTables(con) :用於檢視con中的所有table
  • dbRemoveTable(con,”table_name”)
  • dbReadTable(con,”table_name”)
  • dbWriteTable(con,”table_name”,value) 其中value型別需要為資料框

2.在R中實現資料變換

我們使用以上的語句,讀取所需要變換的表

data=dbReadTable(con,"table_name"

然後使用一個重要的函式:tapply()

  • 注意,我下面使用的是我之前舉例所用的表
data2=tapply(data\$y,list(data\$x1,data$x2),sum)

對於tapply(x,list(a,b),fac)
a和b是形成交叉表的行列表頭
而x則是取值,我們當然可以不使用data裡面的值當作x
fac則是對x進行的函式運算,比如使用sum,就是將相同的x1,x2的y相加

3.將資料導回mysql

上面我們已經把資料變換為想要的表格形式了,不過,使用了tapply後,data2的類會變為矩陣(matrix),要想知道資料型別,在R中使用class()便可以檢視,而我們所使用的RMySQL包將r中資料寫入mysql是需要用資料框的,所以我們要轉換矩陣為資料框,那麼要怎麼做呢,很簡單

data3=data.frame(data2)

這樣,我們的data3便是一個數據框了,使用語句

dbWriteTable(con,test,data3)

便寫入了一個table於mysql,名字叫做test,資料值為data3.