• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

R语言--数据接口(五)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
1. CSV文件
  • 获取和设置工作目录
# 获取和设置工作目录
print(getwd())
# 设置当前工作目录
setwd("E:/R")
print(getwd())

打印结果:


图1.png
  • 输入为CSV文件
    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文件
# 读取csv文件
data <- read.csv("input.csv")
print(data)

效果:


图2.png
  • 分析csv文件
# 分析csv文件
data <- read.csv("input.csv")

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

效果:


图3.png
  • 获得最高工资
# 获得最高工资
data <- read.csv("input.csv")
sal <- max(data$salary)
print(sal)

打印结果:


图4.png
  • 获取具有最高工资的人的详细信息
# 获取具有最高工资的人的详细信息
data <- read.csv("input.csv")
# 获取最大工资
sal <- max(data$salary)
# 获取信息
retval <- subset(data, salary == max(salary))
print(retval)

打印结果:


图5.png
  • 获取所有的IT部门员工信息
# 获取所有的IT部门员工的信息
data <- read.csv("input.csv")
retval <- subset(data, dept == "IT")
print(retval)

打印结果:


图6.png
  • 获得工资大于600的IT部门的人员
# 获得工资大于600的IT部门的人员
data <- read.csv("input.csv")
info <- subset(data, salary > 600 & dept == "IT")
print(info)

打印结果:


图7.png
  • 获得2014年或之后加入的人
# 获得2014年或之后加入的人
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
print(retval)

打印结果:


图8.png
  • 写入csv
# 写入csv文件
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
# 写入
# write.csv(retval, "output.csv")
# 写入并删除附加参数
write.csv(retval, "output.csv", row.names = FALSE)
newData <- read.csv("output.csv")
print(newData)

打印结果:


图9.png
2. Excel文件
  • 安装xlsx软件包
# 安装包
install.packages("xlsx", repos="https://cran.cnr.berkeley.edu/")
  • 验证并加载包
# 验证包是否安装
any(grepl("xlsx",installed.packages()))
# 加载包
library("xlsx")

打印结果:


图10.png
  • 读取Excel文件
# 读取Excel文件
library("xlsx")
data <- read.xlsx("input.xlsx", sheetIndex = 1)
print(data)

打印结果:


图11.png
3. 二进制文件
  • 语法

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

以下是所使用的参数的描述 -
-- con是读取或写入二进制文件的连接对象。
-- object是要写入的二进制文件。
-- what是模式,如字符,整数等表示要读取的字节。
-- n是从二进制文件读取的字节数。

  • 写入二进制文件
# # 写入二进制文件
# 将mtcars数据写入mtcars.csv
write.table(mtcars, file = "mtcars.csv", row.names = FALSE, na = "", col.names = TRUE, sep = ",")
# 读取文件
new.mtcars <- read.table("mtcars.csv", sep = ",", header = TRUE, nrows = 5)
# 写入文件名
write.filename = file("E:/R/data/binmtcars.dat", "wb")
# 写为二进制文件
writeBin(c("cyl", "am", "gear"), write.filename)
# 写入记录
writeBin(c(new.mtcars$cyl, new.mtcars$am, new.mtcars$gear), write.filename)
# 关闭文件
close(write.filename)
  • 读取二进制文件
# 读取二进制文件
read.filename <- file("E:/R/data/binmtcars.dat", "rb")
# 读取列
column.names <- readBin(read.filename, character(), n = 3)
# 读取文件名
read.filename <- file("E:/R/data/binmtcars.dat", "rb")
bindata <- readBin(read.filename, integer(), n = 18)
# 打印
print(bindata)
# 读取cyl,第4-8个字节
cyldata = bindata[4:8]
print(cyldata)
# 读取am,第9-13字节
amdata = bindata[9:13]
print(amdata)
# 读取gear
geardata = bindata[14:18]
print(geardata)
# 绑定数据
finaldata = cbind(cyldata, amdata, geardata)
colnames(finaldata) = column.names
print(finaldata)

打印结果:


图12.png
4. XML文件
  • 安装
# 安装包
install.packages("XML", repos="https://cran.cnr.berkeley.edu/")
  • 读取XML
# 读取XML文件
library("XML")
library("methods")
# 读取文件
result <- xmlParse(file = "input.xml")
print(result)

打印结果:

E:\R\data>Rscript dataInterface.R
<?xml version="1.0"?>
<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文件中存在的节点数
library("XML")
library("methods")
# 读取文件
result <- xmlParse(file = "input.xml")
# 获取根节点
rootnode <- xmlRoot(result)
# 获取节点数
rootsize <- xmlSize(rootnode)
print(rootsize)

打印结果:


图13.png
  • 第一个节点的详细信息
# 获取第一个结点的详细信息
library("XML")
library("methods")
# 读取文件
result <- xmlParse(file = "input.xml")
# 获取根节点
rootnode <- xmlRoot(result)
# 打印第一个结点详细信息
print(rootnode[1])

打印结果:


图14.png
  • 获取节点的不同元素
# 获取结点的不同元素
library("XML")
library("methods")
# 读取文件
result <- xmlParse(file = "input.xml")
# 获取根节点
rootnode <- xmlRoot(result)
# 打印第一个结点的第一个元素
print(rootnode[[1]][[1]])
# 打印第一个结点的第五个元素
print(rootnode[[1]][[5]])
# 打印第三个几点的第二个元素
print(rootnode[[3]][[2]])

打印结果:


图15.png
  • XML到数据帧
# XML到数据帧
library("XML")
library("methods")
# 转换XML到数据帧
xmldataframe <- xmlToDataFrame("input.xml")
print(xmldataframe)

打印结果:


图16.png
5. JSON文件
  • 安装包
# 安装包
install.packages("rjson", repos="https://cran.cnr.berkeley.edu/")
  • 读取JSON文件
# 读取JSON文件
# 加载库
library("rjson")
# 读取JSON文件
result <- fromJSON(file = "input.json")
print(result)

打印结果:


图17.png
  • JSON转换为数据帧
# JSON转换数据帧
# 加载库
library("rjson")
# 读取JSON文件
result <- fromJSON(file = "input.json")
# 转换为数据帧
json_data_frame <- as.data.frame(result)
print(json_data_frame)

打印结果:


图18.png
6. Web数据
  • 安装包
# 安装R语言包
install.packages("RCurl", repos="https://cran.cnr.berkeley.edu/")
install.packages("XML", repos="https://cran.cnr.berkeley.edu/")
install.packages("stringr", repos="https://cran.cnr.berkeley.edu/")
install.packages("plyr", repos="https://cran.cnr.berkeley.edu/")
  • 获取数据
# 下载文件
library("RCurl")
library("XML")
library("stringr")
library("plyr")
# 设置url
url <- "http://www.geos.ed.ac.uk/~weather/jcmb_ws/"
# 获取网页链接数据
links <- getHTMLLinks(url)
# 获取包含JCMB_2015的文件名
filenames <- links[str_detect(links, "JCMB_2015")]
# 将文件名转换为列表
filenames_list <- as.list(filenames)
# 下载文件
downloadcsv <- function(mainurl, filename) {
    filedetails <- str_c(mainurl, filename)
    download.file(filedetails, filename)
}
# 应用l_ply函数保存文件
l_ply(filenames, downloadcsv, mainurl = "http://www.geos.ed.ac.uk/~weather/jcmb_ws/")

代码下载


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap