R语言中矩阵或者数据集操作

前言

记录一些R语言中简单易忘的语句,矩阵或数据集操作相关(随时更新)


1.创建新数据框

1.创建新数据框:

data = data.frame(ID= character(), age= numeric(), stringsAsFactors=FALSE)

这里会创建一个名为data的数据框,具体长这样:

[1] ID  age
<0 行> (或0-长度的row.names)

即有两列名为ID、age的空数据框,经尝试若直接full_join其他新数据框,会出现两列都是NA的名为ID和age的数据
2.创建新矩阵:
https://baijiahao.baidu.com/s?id=1609239397494178918&wfr=spider&for=pc

2.导入数据

amazon_hosts = read.table("amazon_hosts.csv",header = T, sep=",")
class(amazon_hosts)
[1] "data.frame"

注意用read.table导入的数据集格式为data.frame

head(amazon_hosts)
              Host Count Proportion
1 Typed amazon.com 89919 0.47577197
2          msn.com  7258 0.03840293
3        yahoo.com  6078 0.03215941
4       google.com  4381 0.02318038
5 recipesource.com  4283 0.02266186
6          aol.com  1639 0.00867214
class(amazon_hosts[,1])
[1] "factor"
class(amazon_hosts[1,1])
[1] "factor"
class(amazon_hosts[,2])
[1] "integer"
class(amazon_hosts[1,2])
[1] "integer"
class(amazon_hosts[,3])
[1] "numeric"
class(amazon_hosts[1,3])
[1] "numeric"

导入的data.frame类型数据集内有三种类型的数据:
1.factor
在R中数据的分类是用因子数据类型(factor)来表示的。因子被用来表示类别数据,因此也被称为“类别变量”。即Categorical Variable
2.integer
3.numeric
改种数据是相对于factor而言的,包括小数的数据类型,即Numerical Variable

2.锁定操作数据集

attach(amazon_hosts)

下面可以直接用数据集中的列名引用,简化数据集名$列名这种方式

3.查看数据集

 > summary(amazon_hosts)
                 Host        Count           Proportion      
 24hour-mall.com   : 1   Min.   :  503.0   Min.   :0.002661  
 aol.com           : 1   1st Qu.:  579.2   1st Qu.:0.003065  
 att.net           : 1   Median : 1026.0   Median :0.005429  
 atwola.com        : 1   Mean   : 8590.7   Mean   :0.045455  
 bmezine.com       : 1   3rd Qu.: 3622.0   3rd Qu.:0.019164  
 couponmountain.com: 1   Max.   :89919.0   Max.   :0.475772  
 (Other)           :16              
 > str(amazon_hosts_rev)
'data.frame':	11 obs. of  3 variables:
 $ Host      : Factor w/ 23 levels "24hour-mall.com",..: 21 14 22 11 20 2 13 4 5 7 ...
 $ Count     : int  89919 7258 6078 4381 4283 1639 1573 1289 1285 1166 ...
 $ Proportion: num  0.4758 0.0384 0.0322 0.0232 0.0227 ...

summary可以得到一个统计结果,str(structure的缩写)可以得到结构,适用于对象内容过长R不予以展示的内容

 > head(amazon_hosts)
 > tail(amazon_hosts)

得到数据集前n或者后n行数据

3.重命名行或列

(1)单个行列的重命名

colnames(数据集名)[列数]=‘新列名’
rownames(数据集名)[列数]=‘新列名’

colnames(data)[2] = 'newname'
rownames(data)[2] = 'newname'
(2)将某行列设为行列名

row.names(数据集名)=数据集$列名

row.names(df) = df$gene_id

4.Level函数&Relevel函数

levels(amazon_hosts_rev$Host)
 [1] "24hour-mall.com"     "aol.com"             "att.net"            
 [4] "atwola.com"          "bmezine.com"         "couponmountain.com" 
 [7] "daily-blessings.com" "dealtime.com"        "dotcomscoop.com"    
[10] "earthlink.net"       "google.com"          "imdb.com"           
[13] "iwon.com"            "msn.com"             "netscape.com"       
[16] "Other"               "overture.com"        "popupad.net"        
[19] "postcards.org"       "recipesource.com"    "Typed amazon.com"   
[22] "yahoo.com"
levels(amazon_hosts_rev$Host)=c(levels(amazon_hosts_rev$Host),'other hosts')

level函数返回因子的不同取值(取决于导入数据框中的取值种类,切割后列名减少但是level不变),可以手动添加

> levels(host_purchase$purchase)
[1] "No"  "Yes"
> host_purchase$purchase=relevel(factor(host_purchase$purchase),"Yes")
> levels(host_purchase$purchase)
[1] "Yes" "No" 

relevel函数使指定的factor提前到第一个(对factor排序)

4.提取行列长度

提取行或者列再length又麻烦又low

nrow()   #()中为数据集或向量名
ncol()

5.矩阵的转置

最常用的t(矩阵名)

注意: 若输入该函数的是数据框,则该数据框会先用as.matrix()转成矩阵格式,然后再引用t(),最终你对一个数据框使用t()函数时,你会得到一个矩阵,而非原先的data.frame.

因为矩阵要求存放的内容是同一种数据类型,对于输入的数据框而言,一般都会有字符串,数值这些,那么最终都会被转成字符串。

因此,如果原先的数据框的第一列是字符串,那么自然而然会把所有的数据都变成字符串,然后把第一列变成第一行。而如果要实现他真正的目的,需要先将第第一行变成行名,然后删掉第一行在转置,也就是

row.names(df) <- df$gene_id
df <- df[,-1]
df <- t(df)

4.数据框切片

用subset函数,第一个参数是要切片的表格,第二个参数是筛选条件,筛选某列的特定值,取出的数据格式仍为数据框。

hosts_msn_recipesource <- subset(host_purchase, host %in% c("msn.com", "recipesource.com"))

也可以直接从数据框中取一列:

a=Nbr.Post_Clicks[Paid == 1]

但是这样得到的就是向量了

6.给数据框添加新行

amazon_hosts_rev[12,]=list('other hosts',sum(tail(Count,11)),0)

注意: 不管是直接添加行还是单个元素,如果是factor类型,添加的内容必须是level中已有的,否则要先添加level

6.数据框计算

数据框类型的数据集可以整行整列计算:

amazon_hosts_rev$Proportion=amazon_hosts_rev$Count/sum(amazon_hosts_rev$Count)

6.数据框排序

sorted=amazon_hosts_rev[order(amazon_hosts_rev$Count),]

其中,order函数返回的是每一行的排名序列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值