title: “dataframe”
author: “intro”
date: “2022/1/20”
output: html_document
knitr::opts_chunk$set(echo = TRUE)
R基础
在学习中分享,在分享中学习。
R中数据框是常见的数据结构类型,数据框的基础操作在数据处理中至关重要,这是一篇关于数据框基础操作的分享文档,和大家一起学习一起进步。
数据框
#####数据框####
#创建数据框#
df <- data.frame(c(LETTERS[1:10]),c(letters[11:20]),c(21:30))#用data.frame()函数创建数据框
#查看数据框#
class(df)#查看数据框的类型
is.data.frame(df)#判断是否为数据框
str(df)#查看数据框的结构10个观测值,3个变量
dim(df)#查看维度
df#查看数据框
View(df)#通过表格查看数据框
head(df,n=5)#查看数据框的前5行,参数控制查看的行数
tail(df,2)#查看数据框的最后2行
?head#查看head()的帮助文档
#名称#
names(df)#查看列名
colnames(df)#查看列名
rownames(df)#查看行名
names(df) <- c('LETTERS','letters','numbers')#修改列名
colnames(df)[3] <- 'newnames'#修改列名
colnames(df)
rownames(df)[1] <- 'hello'#修改行名
rownames(df)
#获取元素#
#位置获取#
df[1,]#获取第1行
df[,2]#获取第2列
df[1,2]#位置获取第1行第2列的元素[i,j]i行j列
df[1:5,2:3]#获取第1-5行,2-3列
#逻辑获取#
df[which(df=='H'),]#获取H行
df[df$LETTERS=='I',]#获取I行
df[df$numbers>=25,]#获取大于25的行
#名称获取#
df[c('hello'),c('LETTERS','newnames')]#通过名称直接获取
df$letters#$符号+列获取列的数据
df_new <- subset(df,df$LETTERS>'C',select = c(1,3))#subset()函数选择大于C的行和1,3列
df_new
#删除特定的元素#
df[-c(5:10),-2]#删除最后的6项和第2列
#增添新的列#
df$rnorm <- rnorm(10,0,1)#增加一行,均值为0,标准差为1的10个正态分布的数据
df
#调整顺序#
df_new1 <- df[,c(3,1,2)]
df_new1
代码+运行结果
#创建数据框#
df <- data.frame(c(LETTERS[1:10]),c(letters[11:20]),c(21:30))#用data.frame()函数创建数据框
#查看数据框#
class(df)#查看数据框的类型
## [1] "data.frame"
is.data.frame(df)#判断是否为数据框
## [1] TRUE
str(df)#查看数据框的结构10个观测值,3个变量
## 'data.frame': 10 obs. of 3 variables:
## $ c.LETTERS.1.10.. : chr "A" "B" "C" "D" ...
## $ c.letters.11.20..: chr "k" "l" "m" "n" ...
## $ c.21.30. : int 21 22 23 24 25 26 27 28 29 30
dim(df)#查看维度
## [1] 10 3
df#查看数据框
## c.LETTERS.1.10.. c.letters.11.20.. c.21.30.
## 1 A k 21
## 2 B l 22
## 3 C m 23
## 4 D n 24
## 5 E o 25
## 6 F p 26
## 7 G q 27
## 8 H r 28
## 9 I s 29
## 10 J t 30
View(df)#通过表格查看数据框
head(df,n=5)#查看数据框的前5行,参数控制查看的行数
## c.LETTERS.1.10.. c.letters.11.20.. c.21.30.
## 1 A k 21
## 2 B l 22
## 3 C m 23
## 4 D n 24
## 5 E o 25
tail(df,2)#查看数据框的最后2行
## c.LETTERS.1.10.. c.letters.11.20.. c.21.30.
## 9 I s 29
## 10 J t 30
?head#查看head()的帮助文档
## starting httpd help server ... done
#名称#
names(df)#查看列名
## [1] "c.LETTERS.1.10.." "c.letters.11.20.." "c.21.30."
colnames(df)#查看列名
## [1] "c.LETTERS.1.10.." "c.letters.11.20.." "c.21.30."
rownames(df)#查看行名
## [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
names(df) <- c('LETTERS','letters','numbers')#修改列名
colnames(df)[3] <- 'newnames'#修改列名
colnames(df)
## [1] "LETTERS" "letters" "newnames"
rownames(df)[1] <- 'hello'#修改行名
rownames(df)
## [1] "hello" "2" "3" "4" "5" "6" "7" "8" "9"
## [10] "10"
#获取元素#
#位置获取#
df[1,]#获取第1行
## LETTERS letters newnames
## hello A k 21
df[,2]#获取第2列
## [1] "k" "l" "m" "n" "o" "p" "q" "r" "s" "t"
df[1,2]#位置获取第1行第2列的元素[i,j]i行j列
## [1] "k"
df[1:5,2:3]#获取第1-5行,2-3列
## letters newnames
## hello k 21
## 2 l 22
## 3 m 23
## 4 n 24
## 5 o 25
#逻辑获取#
df[which(df=='H'),]#获取H行
## LETTERS letters newnames
## 8 H r 28
df[df$LETTERS=='I',]#获取I行
## LETTERS letters newnames
## 9 I s 29
df[df$numbers>=25,]#获取大于25的行
## [1] LETTERS letters newnames
## <0 rows> (or 0-length row.names)
#名称获取#
df[c('hello'),c('LETTERS','newnames')]#通过名称直接获取
## LETTERS newnames
## hello A 21
df$letters#$符号+列获取列的数据
## [1] "k" "l" "m" "n" "o" "p" "q" "r" "s" "t"
df_new <- subset(df,df$LETTERS>'C',select = c(1,3))#subset()函数选择大于C的行和1,3列
df_new
## LETTERS newnames
## 4 D 24
## 5 E 25
## 6 F 26
## 7 G 27
## 8 H 28
## 9 I 29
## 10 J 30
#删除特定的元素#
df[-c(5:10),-2]#删除最后的6项和第2列
## LETTERS newnames
## hello A 21
## 2 B 22
## 3 C 23
## 4 D 24
#增添新的列#
df$rnorm <- rnorm(10,0,1)#增加一行,均值为0,标准差为1的10个正态分布的数据
df
## LETTERS letters newnames rnorm
## hello A k 21 1.4281738
## 2 B l 22 -2.4716680
## 3 C m 23 0.3767536
## 4 D n 24 -1.7695230
## 5 E o 25 1.6973431
## 6 F p 26 -0.4065415
## 7 G q 27 -0.3756224
## 8 H r 28 1.8844378
## 9 I s 29 1.1797981
## 10 J t 30 0.5154794
#调整顺序#
df_new1 <- df[,c(3,1,2)]
df_new1
## newnames LETTERS letters
## hello 21 A k
## 2 22 B l
## 3 23 C m
## 4 24 D n
## 5 25 E o
## 6 26 F p
## 7 27 G q
## 8 28 H r
## 9 29 I s
## 10 30 J t