R语言学习笔记(14)——数据接口

CSV文件

从csv文件读取数据,然后将数据写入csv文件。 该文件应该存在于当前工作目录中,以便R语言可以读取它。 当然我们也可以设置我们自己的目录并从那里读取文件。

获取和设置工作目录

使用getwd()函数检查R语言工作区指向的目录。 还可以使用setwd()函数设置新的工作目录。
示例:
输入:

# Get and print current working directory.
print(getwd())

# Set current working directory.
setwd("/web/com")

# Get and print current working directory.
print(getwd())

输出:

[1] "D:/untitled"
[1] "/web/com"

注:
此结果取决于使用者的操作系统和当前工作的目录。

输入为CSV文件

csv文件是一个文本文件,其中列中的值由逗号分隔。 让我们考虑名为input.csv的文件中出现的以下数据。
可以通过复制和粘贴此数据使用Windows记事本创建此文件。 使用记事本中的保存为所有文件(.)选项将文件保存为input.csv。

id,name,salary,start_date,dept
1,Rick,623.3,2012-01-01,IT
2,Dan,515.2,2013-09-23,Operations
3,Michelle,611,2014-11-15,IT
4,Ryan,729,2014-05-11,HR
 ,Gary,843.25,2015-03-27,Finance
6,Nina,578,2013-05-21,IT
7,Simon,632.8,2013-07-30,Operations
8,Guru,722.5,2014-06-17,Finance

读取CSV文件

以下是read.csv()函数的一个简单示例,用于读取当前工作目录中可用的CSV文件。
示例:
输入:

data <- read.csv("input.csv")
print(data)

输出:

  id     name salary start_date       dept
1  1     Rick 623.30 2012-01-01         IT
2  2      Dan 515.20 2013-09-23 Operations
3  3 Michelle 611.00 2014-11-15         IT
4  4     Ryan 729.00 2014-05-11         HR
5 NA     Gary 843.25 2015-03-27    Finance
6  6     Nina 578.00 2013-05-21         IT
7  7    Simon 632.80 2013-07-30 Operations
8  8     Guru 722.50 2014-06-17    Finance

分析CSV文件

默认情况下,read.csv()函数将输出作为数据帧。 这可以容易地如下检查。 此外,我们可以检查列和行的数量。
示例:
输入:

data <- read.csv("input.csv")

print(is.data.frame(data))
print(ncol(data))
print(nrow(data))

输出:

[1] TRUE
[1] 5
[1] 8

而一旦我们读取数据帧中的数据,我们就可以应用所有适用于数据帧的函数。

获得最高工资

示例:
输入:

# Create a data frame.
data <- read.csv("input.csv")

# Get the max salary from data frame.
sal <- max(data$salary)
print(sal)

输出:

[1] 843.25

获取具有最高工资的人的详细信息

我们可以获取满足特定过滤条件的行,类似于sql where子句
示例:
输入:

# Create a data frame.
data <- read.csv("input.csv")

# Get the person detail having max salary.
retval <- subset(data, salary == max(salary))
print(retval)

输出:

  id name salary start_date    dept
5 NA Gary 843.25 2015-03-27 Finance

附:
R语言中的subset()函数用于创建数据帧的子集。这也可用于从数据帧中删除列。
subset(df,expr)
df:使用的数据帧
expr:子集的条件

获取所有IT部门员工的信息

示例:
输入:

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset( data, dept == "IT")
print(retval)

输出:

  id     name salary start_date dept
1  1     Rick  623.3 2012-01-01   IT
3  3 Michelle  611.0 2014-11-15   IT
6  6     Nina  578.0 2013-05-21   IT

获取工资大于600的IT部门的人员

示例:
输入:

# Create a data frame.
data <- read.csv("input.csv")

info <- subset(data, salary > 600 & dept == "IT")
print(info)

输出:

  id     name salary start_date dept
1  1     Rick  623.3 2012-01-01   IT
3  3 Michelle  611.0 2014-11-15   IT

获得2014年或之后加入的人

示例:
输入:

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
print(retval)

输出:

  id     name salary start_date    dept
3  3 Michelle 611.00 2014-11-15      IT
4  4     Ryan 729.00 2014-05-11      HR
5 NA     Gary 843.25 2015-03-27 Finance
8  8     Guru 722.50 2014-06-17 Finance

写入CSV文件

R语言可以创建csv文件形式的现有数据帧。 write.csv()函数用于创建csv文件。 此文件在工作目录中创建。
示例:
输入:

# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))

# Write filtered data into a new file.
write.csv(retval,"output.csv")
newdata <- read.csv("output.csv")
print(newdata)

输出:

  X id     name salary start_date    dept
1 3  3 Michelle 611.00 2014-11-15      IT
2 4  4     Ryan 729.00 2014-05-11      HR
3 5 NA     Gary 843.25 2015-03-27 Finance
4 8  8     Guru 722.50 2014-06-17 Finance

在这里插入图片描述
可以看到,在目录中生成了一个新的文件 —— output.csv
上述输出中的列X来数字数据集newper。这可以在写入文件时使用附加参数删除。
输入:

# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))

# Write filtered data into a new file.
write.csv(retval,"output.csv", row.names = FALSE)
newdata <- read.csv("output.csv")
print(newdata)

输出:

  id     name salary start_date    dept
1  3 Michelle 611.00 2014-11-15      IT
2  4     Ryan 729.00 2014-05-11      HR
3 NA     Gary 843.25 2015-03-27 Finance
4  8     Guru 722.50 2014-06-17 Finance

Excel文件

Microsoft Excel是最广泛使用的电子表格程序,以.xls或.xlsx格式存储数据。 R语言可以直接从这些文件使用一些excel特定的包。 很少这样的包是 - XLConnect,xlsx,gdata等。我们将使用xlsx包。 R语言也可以使用这个包写入excel文件。

安装xlsx包

在R控制台中使用以下命令来安装“xlsx”软件包。 它可能会要求安装一些额外的软件包这个软件包依赖。 按照具有所需软件包名称的同一命令安装其他软件包。
输入:

install.packages("xlsx")

输出:
在这里插入图片描述

验证并加载“xlsx”软件包

使用以下命令验证并加载“xlsx”软件包
输入:

# Verify the package is installed.
any(grepl("xlsx",installed.packages()))

# Load the library into R workspace.
library("xlsx")

输出:

[1] TRUE

Error: package or namespace load failed for ‘xlsx’:
 loadNamespace()里算'rJava'时.onLoad失败了,详细内容:
  调用: fun(libname, pkgname)
  错误: JAVA_HOME cannot be determined from the Registry

此处报错是因为电脑中未安装或者未能正确配置java环境,通过下载相应的JDK即可解决,此问题不解决,会直接影响后续Excel文件的读取。 (JDK的下载网上搜索即有一大堆)

输入为xlsx文件

打开Microsoft Excel。 将以下数据复制并粘贴到名为sheet1的工作表中。

id	name      salary    start_date	dept
1	Rick	  623.3	    1/1/2012	IT
2	Dan       515.2     9/23/2013   Operations
3	Michelle  611	    11/15/2014	IT
4	Ryan	  729	    5/11/2014	HR
5	Gary	  843.25    3/27/2015	Finance
6	Nina	  578       5/21/2013	IT
7	Simon	  632.8	    7/30/2013	Operations
8	Guru	  722.5	    6/17/2014	Finance

还要将以下数据复制并粘贴到另一个工作表,并将此工作表重命名为“city”

name	 city
Rick	 Seattle
Dan      Tampa
Michelle Chicago
Ryan	 Seattle
Gary	 Houston
Nina	 Boston
Simon	 Mumbai
Guru	 Dallas

将Excel文件另存为“input.xlsx”。 应将其保存在R工作区的当前工作目录中。

读取Excel文件

通过使用read.xlsx()函数读取input.xlsx,如下所示。 结果作为数据帧存储在R语言环境中。
输入:

# Read the first worksheet in the file input.xlsx.
data <- read.xlsx("input.xlsx", sheetIndex = 1)
print(data)

输出:

  id     name salary start_date       dept
1  1     Rick 623.30   1/1/2012         IT
2  2      Dan 515.20  9/23/2013 Operations
3  3 Michelle 611.00 11/15/2014         IT
4  4     Ryan 729.00  5/11/2014         HR
5  5     Gary 843.25  3/27/2015    Finance
6  6     Nina 578.00  5/21/2013         IT
7  7    Simon 632.80  7/30/2013 Operations
8  8     Guru 722.50  6/17/2014    Finance

注:
此处复制到Excel文件中应该每个数据占据一个,直接复制粘贴不满足此条件,输出也有所区别。

二进制文件

二进制文件是包含仅以位和字节(0和1)的形式存储的信息的文件。它们不是人类可读的,因为它中的字节转换为包含许多其他不可打印字符的字符和符号。尝试使用任何文本编辑器读取二进制文件将显示如Ø和ð的字符。
二进制文件必须由特定程序读取才能使用。例如,Microsoft Word程序的二进制文件只能通过Word程序读取到人类可读的形式。这表示,除了人类可读的文本之外,还有更多的信息,例如字符和页码等的格式化,它们也与字母数字字符一起存储。最后一个二进制文件是一个连续的字节序列。我们在文本文件中看到的换行符是连接第一行到下一行的字符。
有时,由其他程序生成的数据需要由R作为二进制文件处理。另外,R语言是创建可以与其他程序共享的二进制文件所必需的
R语言有两个函数**writeBin()readBin()**来创建和读取二进制文件。

writeBin()和readBin()函数语法

writeBin(object, con)
readBin(con, what, n )

con:读取或写入二进制文件的连接对象
object:要写入的二进制文件
what:一个对象,其模式将给出要读取的向量的模式,或者一个长度为1的字符向量,描述该模式:“数字”、“双精度”、“整数”、“整数”、“逻辑”、“复杂”、“字符”、“原始”之一
n:从二进制文件读取的字节数
示例:
我们考虑R语言内置数据“mtcars”。 首先,我们从它创建一个csv文件,并将其转换为二进制文件,并将其存储为操作系统文件。 接下来我们读取这个创建的二进制文件。

写入二进制文件

将数据帧“mtcars”读取为csv文件,然后将其作为二进制文件写入操作系统。
输入:

# Read the "mtcars" data frame as a csv file and store only the columns  "cyl", "am" and "gear".
mt<-data.frame(mtcars$cyl,mtcars$am,mtcars$gear)
nam<-c("cyl","am","gear")
colnames(mt)=nam
write.table(mt, file = "mtcars.csv",row.names = FALSE, na = "", 
   col.names = TRUE, sep = ",")

# Store 5 records from the csv file as a new data frame.
new.mtcars <- read.table("mtcars.csv",sep = ",",header = TRUE,nrows = 5)

# Create a connection object to write the binary file using mode "wb".
write.filename = file("/untitled/binmtcars.dat", "wb")

# Write the column names of the data frame to the connection object.
writeBin(colnames(new.mtcars), write.filename)

# Write the records in each of the column to the file.
writeBin(c(new.mtcars$cyl,new.mtcars$am,new.mtcars$gear), write.filename)

# Close the file for writing so that it can be read by other program.
close(write.filename)

注:

  1. write.filename = file(“/untitled/binmtcars.dat”, “wb”) 此处的地址为文件存储位置,存储位置会生成相应的.csv文件。
    在这里插入图片描述
  2. 因示例中的代码与注释有出入,且运行结果与预期结果不一致,故有所修改。

读取二进制文件

上面创建的二进制文件将所有数据存储为连续字节。 因此,我们将通过选择适当的列名称值和列值来读取它。
输入:

# Create a connection object to read the file in binary mode using "rb".
read.filename <- file("/untitled/binmtcars.dat", "rb")

# First read the column names. n = 3 as we have 3 columns.
column.names <- readBin(read.filename, character(),  n = 3)

# Next read the column values. n = 18 as we have 3 column names and 15 values.
read.filename <- file("/untitled/binmtcars.dat", "rb")
bindata <- readBin(read.filename, integer(),  n = 18)

# Print the data.
print(bindata)

# Read the values from 4th byte to 8th byte which represents "cyl".
cyldata = bindata[4:8]
print(cyldata)

# Read the values form 9th byte to 13th byte which represents "am".
amdata = bindata[9:13]
print(amdata)

# Read the values form 9th byte to 13th byte which represents "gear".
geardata = bindata[14:18]
print(geardata)

# Combine all the read values to a dat frame.
finaldata = cbind(cyldata, amdata, geardata)
colnames(finaldata) = column.names
print(finaldata)

注:
read.filename <- file(“/untitled/binmtcars.dat”, “rb”) 此处同上。
输出:

[1]    7108963 1728081249    7496037          6          6          4
 [7]          6          8          1          1          1          0
[13]          0          4          4          4          3          3

[1] 6 6 4 6 8

[1] 1 1 1 0 0

[1] 4 4 4 3 3

     cyl am gear
[1,]   6  1    4
[2,]   6  1    4
[3,]   4  1    4
[4,]   6  0    3
[5,]   8  0    3

成功读取R中的二进制文件得到原始数据。

XML文件

XML是一种文件格式,它使用标准ASCII文本共享万维网,内部网和其他地方的文件格式和数据。 它代表可扩展标记语言(XML)。 类似于HTML它包含标记标签。 但是与HTML中的标记标记描述页面的结构不同,在XML中,标记描述了包含在文件中的数据的含义。
可以使用**“XML”包**读取R语言中的xml文件。 此软件包可以使用以下命令安装。

install.packages("XML")

输入数据

通过将以下数据复制到文本编辑器(如记事本)中来创建XMl文件。 使用.xml扩展名保存文件,并将文件类型选择为所有文件(.
输入:

<RECORDS>
   <EMPLOYEE>
      <ID>1</ID>
      <NAME>Rick</NAME>
      <SALARY>623.3</SALARY>
      <STARTDATE>1/1/2012</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
	
   <EMPLOYEE>
      <ID>2</ID>
      <NAME>Dan</NAME>
      <SALARY>515.2</SALARY>
      <STARTDATE>9/23/2013</STARTDATE>
      <DEPT>Operations</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>3</ID>
      <NAME>Michelle</NAME>
      <SALARY>611</SALARY>
      <STARTDATE>11/15/2014</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>4</ID>
      <NAME>Ryan</NAME>
      <SALARY>729</SALARY>
      <STARTDATE>5/11/2014</STARTDATE>
      <DEPT>HR</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>5</ID>
      <NAME>Gary</NAME>
      <SALARY>843.25</SALARY>
      <STARTDATE>3/27/2015</STARTDATE>
      <DEPT>Finance</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>6</ID>
      <NAME>Nina</NAME>
      <SALARY>578</SALARY>
      <STARTDATE>5/21/2013</STARTDATE>
      <DEPT>IT</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>7</ID>
      <NAME>Simon</NAME>
      <SALARY>632.8</SALARY>
      <STARTDATE>7/30/2013</STARTDATE>
      <DEPT>Operations</DEPT>
   </EMPLOYEE>
   
   <EMPLOYEE>
      <ID>8</ID>
      <NAME>Guru</NAME>
      <SALARY>722.5</SALARY>
      <STARTDATE>6/17/2014</STARTDATE>
      <DEPT>Finance</DEPT>
   </EMPLOYEE>
	
</RECORDS>

读取XML文件

xml文件由R语言使用函数xmlParse()读取。 它作为列表存储在R语言中。
输入:

# Load the package required to read XML files.
library("XML")

# Also load the other required package.
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Print the result.
print(result)

输出:

1
    Rick
    623.3
    1/1/2012
    IT
  
  
    2
    Dan
    515.2
    9/23/2013
    Operations
  
  
    3
    Michelle
    611
    11/15/2014
    IT
  
  
    4
    Ryan
    729
    5/11/2014
    HR
  
  
    5
    Gary
    843.25
    3/27/2015
    Finance
  
  
    6
    Nina
    578
    5/21/2013
    IT
  
  
    7
    Simon
    632.8
    7/30/2013
    Operations
  
  
    8
    Guru
    722.5
    6/17/2014
    Finance

获取XML文件中存在的节点数

输入:

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Find number of nodes in the root.
rootsize <- xmlSize(rootnode)

# Print the result.
print(rootsize)

输出:

output
[1] 8

第一个节点的详细信息

让我们看看解析文件的第一条记录。 它将给我们一个关于存在于顶层节点中的各种元素的想法。
输入:

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Print the result.
print(rootnode[1])

输出:

$EMPLOYEE
  1
  Rick
  623.3
  1/1/2012
  IT
 

attr(,"class")
[1] "XMLInternalNodeList" "XMLNodeList" 

获取节点的不同元素

输入:

# Load the packages required to read XML files.
library("XML")
library("methods")

# Give the input file name to the function.
result <- xmlParse(file = "input.xml")

# Exract the root node form the xml file.
rootnode <- xmlRoot(result)

# Get the first element of the first node.
print(rootnode[[1]][[1]])

# Get the fifth element of the first node.
print(rootnode[[1]][[5]])

# Get the second element of the third node.
print(rootnode[[3]][[2]])

输出:

1 
IT 
Michelle 

XML到数据帧

为了在大文件中有效地处理数据,我们将xml文件中的数据作为数据帧读取。 然后处理数据帧以进行数据分析
输入:

# Load the packages required to read XML files.
library("XML")
library("methods")

# Convert the input xml file to a data frame.
xmldataframe <- xmlToDataFrame("input.xml")
print(xmldataframe)

输出:

      ID    NAME     SALARY    STARTDATE       DEPT 
1      1    Rick     623.30    2012-01-01      IT
2      2    Dan      515.20    2013-09-23      Operations
3      3    Michelle 611.00    2014-11-15      IT
4      4    Ryan     729.00    2014-05-11      HR
5     NA    Gary     843.25    2015-03-27      Finance
6      6    Nina     578.00    2013-05-21      IT
7      7    Simon    632.80    2013-07-30      Operations
8      8    Guru     722.50    2014-06-17      Finance

JSON文件

json文件以人类可读格式将数据存储为文本。 Json代表javascript Object Notation。 R可以使用rjson包读取JSON文件。

安装rjson包

在R语言控制台中,通过以下命令来安装rjson包。
输入:

install.packages("rjson")

输入数据

通过将以下数据复制到文本编辑器(如记事本)中来创建JSON文件使用.json扩展名保存文件,并将文件类型选择为所有文件(.
输入:

{ 
   "ID":["1","2","3","4","5","6","7","8" ],
   "Name":["Rick","Dan","Michelle","Ryan","Gary","Nina","Simon","Guru" ],
   "Salary":["623.3","515.2","611","729","843.25","578","632.8","722.5" ],
   
   "StartDate":[ "1/1/2012","9/23/2013","11/15/2014","5/11/2014","3/27/2015","5/21/2013",
      "7/30/2013","6/17/2014"],
   "Dept":[ "IT","Operations","IT","HR","Finance","IT","Operations","Finance"]
}

读取JSON文件

JSON文件由R使用来自JSON()的函数读取。 它作为列表存储在R中。
输入:

# Load the package required to read JSON files.
library("rjson")

# Give the input file name to the function.
result <- fromJSON(file = "input.json")

# Print the result.
print(result)

输出:

$ID
[1] "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"

$Name
[1] "Rick"     "Dan"      "Michelle" "Ryan"     "Gary"     "Nina"     "Simon"    "Guru"

$Salary
[1] "623.3"  "515.2"  "611"    "729"    "843.25" "578"    "632.8"  "722.5"

$StartDate
[1] "1/1/2012"   "9/23/2013"  "11/15/2014" "5/11/2014"  "3/27/2015"  "5/21/2013"
   "7/30/2013"  "6/17/2014"

$Dept
[1] "IT"         "Operations" "IT"         "HR"         "Finance"    "IT"
   "Operations" "Finance"

将JSON转换为数据帧

我们可以使用as.data.frame()函数将上面提取的数据转换为R语言数据帧以进行进一步分析。
输入:

# Load the package required to read JSON files.
library("rjson")

# Give the input file name to the function.
result <- fromJSON(file = "input.json")

# Convert JSON file to a data frame.
json_data_frame <- as.data.frame(result)

print(json_data_frame)

输出:

      id,   name,    salary,   start_date,     dept
1      1    Rick     623.30    2012-01-01      IT
2      2    Dan      515.20    2013-09-23      Operations
3      3    Michelle 611.00    2014-11-15      IT
4      4    Ryan     729.00    2014-05-11      HR
5     NA    Gary     843.25    2015-03-27      Finance
6      6    Nina     578.00    2013-05-21      IT
7      7    Simon    632.80    2013-07-30      Operations
8      8    Guru     722.50    2014-06-17      Finance

Web数据

许多网站提供数据供其用户使用。 例如,世界卫生组织(WHO)以CSV,txt和XML文件的形式提供健康和医疗信息的报告。 使用R语言程序,我们可以从这些网站以编程方式提取特定数据。
R语言中用于从网站中提取数据的一些是“Rcurl”,XML“和”stringr“,它们用于连接到URL,识别文件所需的链接并将它们下载到本地环境。

安装R语言的包

处理URL和链接到文件需要以下的包。 如果它们在R语言环境中不可用,您可以使用以下命令安装它们。

install.packages("RCurl")
install.packages("XML")
install.packages("stringr")
install.packages("plyr")

注:
若安装报错,一般换个镜像即可。

输入数据

我们将访问URL天气数据,并使用R在2015年下载CSV文件。
示例:
我们将使用函数getHTMLLinks()来收集文件的URL。 然后我们将使用函数downlaod.file()将文件保存到本地系统。 由于我们将对多个文件一次又一次地应用相同的代码,因此我们将创建一个被多次调用的函数。 文件名作为参数以R列表对象的形式传递到此函数。
输入:

# Read the URL.
url <- "http://www.geos.ed.ac.uk/~weather/jcmb_ws/"

# Gather the html links present in the webpage.
links <- getHTMLLinks(url)

# Identify only the links which point to the JCMB 2015 files. 
filenames <- links[str_detect(links, "JCMB_2015")]

# Store the file names as a list.
filenames_list <- as.list(filenames)

# Create a function to download the files by passing the URL and filename list.
downloadcsv <- function (mainurl,filename) {
   filedetails <- str_c(mainurl,filename)
   download.file(filedetails,filename)
}

# Now apply the l_ply function and save the files into the current R working directory.
l_ply(filenames,downloadcsv,mainurl = "http://www.geos.ed.ac.uk/~weather/jcmb_ws/")

验证文件下载

运行上述代码后,您可以在当前R语言工作目录中找到以下文件。

"JCMB_2015.csv" "JCMB_2015_Apr.csv" "JCMB_2015_Feb.csv" "JCMB_2015_Jan.csv"
   "JCMB_2015_Mar.csv"

数据库

数据是关系数据库系统以规范化格式存储。 因此,要进行统计计算,我们将需要非常先进和复杂的sql查询。 但R语言可以轻松地连接到许多关系数据库,如mysql,oracle,Sql服务器等,并从它们获取记录作为数据框。 一旦数据在R语言环境中可用,它就变成正常的R语言数据集,并且可以使用所有强大的包和函数来操作或分析。
在本教程中,我们将使用MySql作为连接到R语言的参考数据库。

RmySQL包

R语言有一个名为“RMySQL”的内置包,它提供与MySql数据库之间的本地连接。 可以使用以下命令在R语言环境中安装此软件包。
输入:

install.packages("RMySQL")

将R连接到MySql

一旦安装了包,我们在R中创建一个连接对象以连接到数据库。 它使用用户名,密码,数据库名称和主机名作为输入。一旦安装了包,我们在R中创建一个连接对象以连接到数据库。 它使用用户名,密码,数据库名称和主机名作为输入。
输入:

# Create a connection Object to MySQL database.
# We will connect to the sampel database named "sakila" that comes with MySql installation.
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila',
   host = 'localhost')

# List the tables available in this database.
 dbListTables(mysqlconnection)

输出:

 [1] "actor"                      "actor_info"                
 [3] "address"                    "category"                  
 [5] "city"                       "country"                   
 [7] "customer"                   "customer_list"             
 [9] "film"                       "film_actor"                
[11] "film_category"              "film_list"                 
[13] "film_text"                  "inventory"                 
[15] "language"                   "nicer_but_slower_film_list"
[17] "payment"                    "rental"                    
[19] "sales_by_film_category"     "sales_by_store"            
[21] "staff"                      "staff_list"                
[23] "store"                     

查询表

我们可以使用函数dbSendQuery()查询MySql中的数据库表。 查询在MySql中执行,并使用R语言fetch()函数返回结果集。 最后,它被存储为R语言中的数据帧
输入:

# Query the "actor" tables to get all the rows.
result = dbSendQuery(mysqlconnection, "select * from actor")

# Store the result in a R data frame object. n = 5 is used to fetch first 5 rows.
data.frame = fetch(result, n = 5)
print(data.fame)

输出:

        actor_id   first_name    last_name         last_update
1        1         PENELOPE      GUINESS           2006-02-15 04:34:33
2        2         NICK          WAHLBERG          2006-02-15 04:34:33
3        3         ED            CHASE             2006-02-15 04:34:33
4        4         JENNIFER      DAVIS             2006-02-15 04:34:33
5        5         JOHNNY        LOLLOBRIGIDA      2006-02-15 04:34:33

带过滤条件的查询

我们可以传递任何有效的select查询来获取结果。
输入:

result = dbSendQuery(mysqlconnection, "select * from actor where last_name = 'TORN'")

# Fetch all the records(with n = -1) and store it as a data frame.
data.frame = fetch(result, n = -1)
print(data)

输出:

        actor_id    first_name     last_name         last_update
1        18         DAN            TORN              2006-02-15 04:34:33
2        94         KENNETH        TORN              2006-02-15 04:34:33
3       102         WALTER         TORN              2006-02-15 04:34:33

更新表中的行

我们可以通过将更新查询传递给dbSendQuery()函数来更新Mysql表中的行。

dbSendQuery(mysqlconnection, "update mtcars set disp = 168.5 where hp = 110")

在执行上面的代码后,我们可以看到在MySql环境中更新的表。

将数据插入表中

dbSendQuery(mysqlconnection,
   "insert into mtcars(row_names, mpg, cyl, disp, hp, drat, wt, qsec, vs, am, gear, carb)
   values('New Mazda RX4 Wag', 21, 6, 168.5, 110, 3.9, 2.875, 17.02, 0, 1, 4, 4)"
)

在执行上面的代码后,我们可以看到插入到MySql环境中的表中的行。

在MySQL中创建表

我们可以在MySql中使用**函数dbWriteTable()**创建表。 如果表已经存在,它将覆盖该表,并将数据帧用作输入。
输入:

# Create the connection object to the database where we want to create the table.
mysqlconnection = dbConnect(MySQL(), user = 'root', password = '', dbname = 'sakila', 
   host = 'localhost')

# Use the R data frame "mtcars" to create the table in MySql.
# All the rows of mtcars are taken inot MySql.
dbWriteTable(mysqlconnection, "mtcars", mtcars[, ], overwrite = TRUE)

执行上面的代码后,我们可以看到在MySql环境中创建的表。

删除MySQL中的表

我们可以删除MySql数据库中的表,将drop table语句传递到**dbSendQuery()**中,就像我们使用它查询表中的数据一样。

dbSendQuery(mysqlconnection, 'drop table if exists mtcars')

执行上面的代码后,我们可以看到表在MySql环境中被删除。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HanWLang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值