R语言学习(四)——对数据进行操作

  • 判断变量的属性
is.character(x)       #判断是否为字符型
is.numeric(x)         #判断是否为数值型
is.vector(x)          #判断是否为一个向量
is.matrix(x)          #判断是否为一个矩阵   
is.array(x)           #判断是否为一个数组
is.data.frame(x)      #判断是否为一个数据框
  • 类的转换
as.numeric()          #转换为数值型
as.logical()          #转换为逻辑型
as.charactor()        #转换为字符串
as.matrix()           #转换为矩阵
as.data.frame()       #转换为数据框
as.factor()           #转换为因子

  • 创建一个向量
#字符型:
character<-c("China", "UK", "USA", "France", "Russia") 
#数值型:
numeric<-c(1, 3, 6, 7, 3, 8, 6, 4)
#逻辑型:
logical<-c(T, F, T, F, T, F, F, T)

生成向量的函数

c(),rep(),seq(),”:”

c()

> x<-c(1,2,3,4)
> x
[1] 1 2 3 4

rep()

rep(x, times = )
#参数:
x	    一个向量或因子
times   重复次数

> x<-rep(1,times=3)
> x
[1] 1 1 1

seq()

> x<-seq(from=3, to=21, by=3 )
> x
[1]  3  6  9 12 15 18 21

“:”

> x<-1:10
> x
 [1]  1  2  3  4  5  6  7  8  9 10
 
> x<-10:1
> x
 [1] 10  9  8  7  6  5  4  3  2  1

通过与向量的组合,可以产生更为复杂的向量。
如:

> x<-rep(1:2,c(10,15))
> x
 [1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
  • 创建一个矩阵
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
> x <- matrix(1:20,nrow=5,ncol=4,byrow=T) 
> x 
[,1] [,2] [,3] [,4] 
[1,] 1 2 3 4 
[2,] 5 6 7 8 
[3,] 9 10 11 12 
[4,] 13 14 15 16 
[5,] 17 18 19 20

> is.matrix(x) 
[1] TRUE

> dim(x) #查看或设置数组的维度向量 
[1] 5 4
注意:此时不可以再向dim(x)赋值,如:dim(x) <- c(6,4) ,会有如下报错:
Error in dim(x) <- c(4, 4) : dims [product 16] 因为与对象长度[20]不匹配
但是,可以这样使用:
> x <- 1:20 
> dim(x) <- c(5,4)  
> x 
[,1] [,2] [,3] [,4] 
[1,] 1 6 11 16 
[2,] 2 7 12 17 
[3,] 3 8 13 18 
[4,] 4 9 14 19 
[5,] 5 10 15 20

> attributes(x)  #使用attributes()函数将返回一个列表,其中的第一个元素是dim,dim中包含向量(5,4)
$`dim`
[1] 5 4

提取对角线元素

> diag(x)

将一个矩阵变成上三角矩阵

> x[lower.tri(y)]<-NA

将一个矩阵变成下三角矩阵

> x[upper.tri(y)]<-NA

将矩阵转换为数据框

as.data.frame(x)
  • 创建一个列表

列表是可以包含多种类型的对象的向量。

> x<-list(1,"A",FALSE,5+6i)
> x
[[1]]
[1] 1

[[2]]
[1] "A"

[[3]]
[1] FALSE

[[4]]
[1] 5+6i

#列表还可以这样访问
> x[1]
[[1]]
[1] 1

> x[2]
[[1]]
[1] "A"

> x[3]
[[1]]
[1] FALSE

> x[4]
[[1]]
[1] 5+6i
  • 创建一个数组
array(data = NA, dim = length(data), dimnames = NULL)
> x<-array(2:6,c(2,4))  #生成一个数值在2到6之间的数组,这个数组为两行四列
> x
     [,1] [,2] [,3] [,4]
[1,]    2    4    6    3
[2,]    3    5    2    4
  • 创建一个数据框

data.frame():

data.frame(..., row.names = NULL, check.rows = FALSE,
           check.names = TRUE, fix.empty.names = TRUE,
           stringsAsFactors = default.stringsAsFactors())

例如:

> student<-data.frame(ID=c(11,12,13),Name=c("Devin","Edward","Wenli"),Gender=c("M","M","F"),Birthdate=c("1984-12-29","1983-5-6","1986-8-8"))
> student
  ID   Name Gender  Birthdate
1 11  Devin      M 1984-12-29
2 12 Edward      M   1983-5-6
3 13  Wenli      F   1986-8-8

利用cbind()和rbind()函数来创建数据框

> x<-1:3
> x
[1] 1 2 3
> y<-10:12
> y
[1] 10 11 12
> cbind(x,y)
     x  y
[1,] 1 10
[2,] 2 11
[3,] 3 12
> rbind(x,y)
  [,1] [,2] [,3]
x    1    2    3
y   10   11   12

访问数据的前六行

> head(x)

去除某行

> x[-1,]

去除某列

> x[,-1]

查看或设置行名

rownames(x) 
rownames(x) <- c(‘a’,’b’,’c’,’d’,’e’) 

查看或设置列名

colnames(x) 
colnames(x) <- c(‘a’,’b’,’c’,’d’,’e’) 

如果一个数据框的每个列都是数值型的,求行的加和

rowSums(x) 
  • 数据读取

常用read.table() 和reas.csv()

read.table(file, header = FALSE, sep = "", quote = "\"'",
           dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
           row.names, col.names, as.is = !stringsAsFactors,
           na.strings = "NA", colClasses = NA, nrows = -1,
           skip = 0, check.names = TRUE, fill = !blank.lines.skip,
           strip.white = FALSE, blank.lines.skip = TRUE,
           comment.char = "#",
           allowEscapes = FALSE, flush = FALSE,
           stringsAsFactors = default.stringsAsFactors(),
           fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
read.csv(file, header = TRUE, sep = ",", quote = "\"",
         dec = ".", fill = TRUE, comment.char = "", ...)
read.csv(file.choose())  #在文件目录中选择需要的文件
  • 数据写入
write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
            eol = "\n", na = "NA", dec = ".", row.names = TRUE,
            col.names = TRUE, qmethod = c("escape", "double"),
            fileEncoding = "")

write.csv()和write.csv2()用法与write.table()相似

write.csv(data, file = "data.csv")

需要把行名去掉,需要使用row.names = FALSE或者row.names = F

write.csv(data, file = "data.csv", row.names = FALSE)

有时候数据里面存在NA,要去掉NA的,就再加一个na = "“

write.csv(data, file = "data.csv", row.names = FALSE, na = "")

要省略列名的话,需要使用write.table()col.names = FALSE, sep = ",“

write.table(data, file = “data.csv”, row.names = FALSE, na = “”, col.names = FALSE, sep = ",")
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R语言数据科学中非常流行和强大的一种编程语言,用于数据分析和数据挖掘。尽管它提供了丰富的功能和包,但在使用R进行数据挖掘时,仍然存在一些常见的问题。 首先,R语言学习曲线相对陡峭,尤其对于初学者来说。R语言的语法和概念与其他编程语言有所不同,需要一定的时间和精力来掌握。因此,在开始使用R进行数据挖掘之前,建议用户先学习基本的R语言知识和技能。 其次,R语言数据处理速度相对较慢。由于R是一种解释型语言,对于大型数据集的处理可能会显得比较缓慢。为了提高数据挖掘的效率,可以使用一些优化技巧,如向量化、使用并行计算等。此外,R在内存管理方面也有一些限制,处理大型数据集时可能会导致内存溢出等问题。 另外,R语言社区的包和函数数量庞大,但质量参差不齐。用户在进行数据挖掘时,可能会遇到某些包或函数不兼容、文档不全面等问题。为了解决这些问题,用户可以仔细查看包的文档和说明,寻求社区的帮助和讨论,或者使用经过广泛测试和应用的常用包。 此外,数据挖掘分析中常涉及到特征选择、数据清洗、模型选择和调参等问题。这些问题需要专业背景和经验支持。对于初学者或者没有相关领域知识的人来说,可能需要花费更多的时间和精力来理解和解决这些问题。 总之,虽然R语言数据挖掘领域有着广泛的应用,但在实际操作中也存在一些常见的问题。通过学习和积累经验,用户可以更好地应对和解决这些问题,提高数据挖掘的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值