R语言数据结构

目录

1、向量、矩阵和数组

(1)向量

(2)矩阵

(3)数组

2、数据框

(1)创建数据框

 (2)数据框合并

(3)数据框排序 


1、向量、矩阵和数组

(1)向量

data() # 查看R软件自带数据集
help(Titanic) # 查看Tianic数据
x <- c(9,5,5,2,8)
y <- c('中国', "美国", '日本', "德车")
z <- c(TRUE, FALSE, FALSE, TRUE)
x;y;z         # 注:同一个向量中的元素类型相同
   [1] 9 5 5 2 8
   [1] "中国" "美国" "日本" "德车"
   [1]  TRUE FALSE FALSE  TRUE

(2)矩阵

# 使用matrix函数创建矩阵
a <- 1:6
mat <- matrix(a, nrow = 2, ncol = 3, byrow = TRUE)
mat                 # 注:矩阵是个二维数组,每个元素类型相同
         [,1] [,2] [,3]
  [1,]    1    2    3
  [2,]    4    5    6
#对行和列重新命名
rownames(mat) = c('A','B')
colnames(mat) = c('甲', '乙', '丙')
mat          
      甲 乙 丙
   A  1  2  3
   B  4  5  6

 t()函数:实现行列转换

t(mat)
     A B
 甲 1 4
 乙 2 5
 丙 3 6

(3)数组

# 使用array函数创建2*3*4的数组
dim1 <- c('男', '女')
dim2 <- c('赞成', '中立', '反对')
dim3 <- c('东部', '西部', '南部', '北部')
data <- round(runif(24, 50, 100)) # 生成24个均匀分布的随机数并取整
d <- array(data, c(2, 3, 4), dimnames = list(dim1, dim2, dim3))
d

, , 东部

   赞成 中立 反对
男   86   56   55
女   92   95   85

, , 西部

   赞成 中立 反对
男   75   96   60
女   93   55   65

, , 南部

   赞成 中立 反对
男   93   98   77
女   98   68   64

, , 北部

   赞成 中立 反对
男   73   89   97
女   55   96  100

2、数据框

(1)创建数据框

# 创建姓名和分数向量
names <- c('李小明', '王大龙', '沈小霞', '张友谊', '钱多多')
math <- c(78, 90, 53, 87, 76)
sport <- c(93, 89, 76, 88, 67)
computer <- c(95, 78, 74, 68, 83)
# 将向量组织成数据框形式
table1 <- data.frame(姓名=names, 数学=math, 体育=sport, 计算机=computer)
table1
    姓名 数学 体育 计算机
1 李小明   78   93     95
2 王大龙   90   89     78
3 沈小霞   53   76     74
4 张友谊   87   88     68
5 钱多多   76   67     83
head(table1, 3)   #查看前三行数据
tail(table1, 3)   #查看后三行数据

str(table1)       #查看数据结构
class(table1)     #查看数据类型
nrow(table1)      #查看数据行的个数
ncol(table1)      #查看数据列的个数
dim(table1)       #查看数据行列数

 (2)数据框合并

names <- c('晓东', '一凡')
math <- c( 55, 87)
sport <- c(89, 77)
computer <- c(92, 73)
table2 <- data.frame(姓名=names, 数学=math, 体育=sport, 计算机=computer)
table2
 姓名 数学 体育 计算机
1 晓东   55   89     92
2 一凡   87   77     73

 rbind()函数:行方式合并

#合并数据框
mytable <- rbind(table1, table2)
mytable
    姓名 数学 体育 计算机
1 李小明   78   93     95
2 王大龙   90   89     78
3 沈小霞   53   76     74
4 张友谊   87   88     68
5 钱多多   76   67     83
6   晓东   55   89     92
7   一凡   87   77     73

names <- c('李小明', '王大龙', '沈小霞', '张友谊', '钱多多', '晓东', '一凡')
english <- c(78, 90, 76, 87, 97, 65, 84)
music <- c(57, 87, 45, 98, 87, 80, 76)
table3 <- data.frame(姓名=names, 英语=english, 音乐=music)
table3
    姓名 英语 音乐
1 李小明   78   57
2 王大龙   90   87
3 沈小霞   76   45
4 张友谊   87   98
5 钱多多   97   87
6   晓东   65   80
7   一凡   84   76

 cbind()函数:列方式合并

cbind(mytable, table3[, 2:3])
    姓名 数学 体育 计算机 英语 音乐
1 李小明   78   93     95   78   57
2 王大龙   90   89     78   90   87
3 沈小霞   53   76     74   76   45
4 张友谊   87   88     68   87   98
5 钱多多   76   67     83   97   87
6   晓东   55   89     92   65   80
7   一凡   87   77     73   84   76

(3)数据框排序 

sort()函数:排序默认为升序;

                   decreasing为TRUE,表示降序;

                   decreasing为FALSE,表示升序

sort(table1$数学)
[1] 53 76 78 87 90
sort(table1$数学, decreasing = TRUE)
[1] 90 87 78 76 53

library(dplyr)
arrange(table1, 姓名) # 按姓名升序对数据框排序
    姓名 数学 体育 计算机
1 李小明   78   93     95
2 钱多多   76   67     83
3 沈小霞   53   76     74
4 王大龙   90   89     78
5 张友谊   87   88     68

arrange(table1, desc(数学)) # 按数学降序对数据框排序
    姓名 数学 体育 计算机
1 王大龙   90   89     78
2 张友谊   87   88     68
3 李小明   78   93     95
4 钱多多   76   67     83
5 沈小霞   53   76     74
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可乐  

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值