0
点赞
收藏
分享

微信扫一扫

R语言空间数据处理(part1)--基础数据操作与处理

学习笔记,仅供参考
学习书目:《R语言空间数据处理与分析实践教程》–卢宾宾;

基础数据操作与处理

设置工作路径,并导入包

workL = "F:/MyStudio/Rstudio/RSpaceMetrology/myRdoc"
setwd(workL)
#getwd()

函数学习记录表



数据类型转换

a <- as("123", "numeric")
b <- as.numeric("456")
class(a)
class(b)



match函数

test1 <- c("A", "A", "B", "B", "B")
type_test1 <- unique(test1)
print(type_test1)
idx <- match(test1, type_test1)
print(idx)



which.min和which.max

test2 <- c(9, 4, 7, 2, 9, 5, 3)
which.min(test2)
which.max(test2)



rev函数

rev函数可以实现向量或矩阵的翻转;当进行矩阵的翻转时,rev函数将矩阵当做一个向量处理,矩阵转换为向量的原则以列优先

test3 <- c(1:5)
print(test3)
print(rev(test3))
print("----------------------")
test4 <- matrix(1:12, nrow = 3)
print(test4)
print(rev(test4))
print(matrix(rev(test4), nrow = 3))



用dplyr包中对数据进行处理

library(dplyr)

data01 <- read.csv("comp.csv")
head(data01)
#选取Demo列
select(data01, "Dame") %>% head()
#选取首字母以B开头的列
filter(data01, Dame == 0) %>% head()
#按照Dame列的大小给data01排序
arrange(data01, Dame) %>% head()
#按照Dame列的大小对data01进行降序排序
arrange(data01, desc(Dame)) %>% head()



用rlist包处理关系型数据

library(rlist)

#创建一个list

person <-
list(
p1=list(name="Ken",age=24,
interest=c("reading","music","movies"),
lang=list(r=2,csharp=4,python=3)),
p2=list(name="James",age=25,
interest=c("sports","music"),
lang=list(r=3,java=2,cpp=5)),
p3=list(name="Penny",age=24,
interest=c("movies","reading"),
lang=list(r=1,cpp=4,python=2)))

str(person)
list.map(person, age)
list.map(person, names(lang))
p.age25 <- list.filter(person, age >= 25)
str(p.age25)
p.py3 <- list.filter(person, lang$python >= 3)
str(p.py3)



利用lubridate包处理时间数据

library(lubridate)

dateString <- c('20131113','120315','12/17/1996','09-01-01')
(date <- parse_date_time(dateString, order = c('ymd','mdy','dmy','ymd')))
wday(date[1])
wday(date, label = TRUE)
month(date)

#查看是否有时间的交叠
begin1 <- ymd_hms("20150903, 12:00:00")
end1 <- ymd_hms("20160804, 12:30:00")
begin2 <- ymd_hms("20151203, 12:00:00")
end2 <- ymd_hms("20160904, 12:30:00")
(date_1 <- interval(begin1, end1))
(date_2 <- interval(begin2, end2))
int_overlaps(date_1, date_2)



利用tidyr包进行数据处理



library(tidyr)

widedata <- data.frame(person=c('Alex','Bob','Cathy'),
grade=c(2,3,4),score=c(78,89,88),
age=c(18,19,18))
widedata
#整合为长数据
longdata <- gather(widedata, variable, value,-person)
longdata

#合并
wideunite<-unite(widedata, information, person, grade, score, age, sep= "-")
wideunite
#拆分
widesep <- separate(wideunite, information,
c("person","grade","score","age"), sep = "-")
widesep


举报

相关推荐

0 条评论