组合框的valuemember值怎么读取_第三讲 R编程基础-矩阵和数据框

2e2ad429d7f426f7b5d07bc9544a3708.png

矩阵

矩阵就像Excel的工作表。它用于组合具有相同类型的向量,可以是数字,字符或逻辑。矩阵用于将数据表存储在R中。

创建和命名矩阵

要轻松创建矩阵,请使用函数cbind()或rbind(),如下所示:

# 数字向量
col1 <- c(5, 6, 7, 8, 9)
col2 <- c(2, 4, 5, 9, 8)
col3 <- c(7, 3, 4, 8, 7)
#按列合并向量
my_data <- cbind(col1, col2, col3)
my_data
     col1 col2 col3
[1,]    5    2    7
[2,]    6    4    3
[3,]    7    5    4
[4,]    8    9    8
[5,]    9    8    7
# 更改行的名字
rownames(my_data) <- c("row1", "row2", "row3", "row4", "row5")
my_data
     col1 col2 col3
row1    5    2    7
row2    6    4    3
row3    7    5    4
row4    8    9    8
row5    9    8    7
  • cbind():按列组合R对象
  • rbind():按行组合R个对象
  • rownames():检索或设置类似矩阵的对象的行名
  • colnames():检索或设置类似矩阵的对象的列名

如果要转置数据,请使用函数t():

t(my_data)

row1 row2 row3 row4 row5

col1 5 6 7 8 9

col2 2 4 5 9 8

col3 7 3 4 8 7

矩阵尺寸

R的功能nrow()和NcoI位()返回的行和列中存在的数据的数目,分别。

ncol(my_data) # 列数
[1] 3
nrow(my_data) # 行数
[1] 5
dim(my_data) # 行列数
[1] 5 3

获取矩阵的子集

  • 通过正索引选择行/列

可以按以下方式选择行和/或列:my_data [row,col]

# 输出第二行
my_data[2, ]
col1 col2 col3 
   6    4    3 
# 输出第二到第四行
my_data[2:4, ]
     col1 col2 col3
row2    6    4    3
row3    7    5    4
row4    8    9    8
# 输出特定非连续行数
my_data[c(2,4), ]
     col1 col2 col3
row2    6    4    3
row4    8    9    8
# 输出第三行
my_data[, 3]
row1 row2 row3 row4 row5 
   7    3    4    8    7 
# 输出第二行第三列内容
my_data[2, 3]
[1] 3
  • 按行/列名选择
# 输出第二列内容
my_data[, "col2"]
row1 row2 row3 row4 row5 
   2    4    5    9    8 

矩阵计算

  • 也可以对矩阵执行简单的操作。例如,以下R代码将矩阵的每个元素乘以2:
my_data*2
     col1 col2 col3
row1   10    4   14
row2   12    8    6
row3   14   10    8
row4   16   18   16
row5   18   16   14
或者,计算log2值:
log2(my_data)
         col1     col2     col3
row1 2.321928 1.000000 2.807355
row2 2.584963 2.000000 1.584963
row3 2.807355 2.321928 2.000000
row4 3.000000 3.169925 3.000000
row5 3.169925 3.000000 2.807355
rowSums()和colSums()函数:分别计算每行的总和和每列的总和。
rowSums(my_data)
row1 row2 row3 row4 row5 
  14   13   16   25   24 
colSums(my_data)
col1 col2 col3 
  35   28   29 

如果你对行/列均值感兴趣,则可以使用函数rowMeans()和colMeans()分别计算行均值和列均值。

请注意,也可以使用函数apply()将任何统计函数应用于矩阵的行/列。

apply()的简化格式如下:

apply(X, MARGIN, FUN)

  • X:数据矩阵
  • MARGIN:可能的值为1(对于行)和2(对于列)
  • FUN:应用于行/列的函数

使用apply()如下:

# 对行进行平均值运算
apply(my_data, 1, mean)
    row1     row2     row3     row4     row5 
4.666667 4.333333 5.333333 8.333333 8.000000 
# 队列进行平均值运算
apply(my_data, 2, mean)
col1 col2 col3 
 7.0  5.6  5.8 

数据框

数据框就像一个矩阵,但可以具有不同类型的列(数字,字符,逻辑)。行是观察值(个人),列是变量。

创建一个数据框

可以使用data.frame()函数创建数据框,如下所示:

patients_data <- data.frame(
  name = my_patients,
  age = patient_ages,
  height = c(180, 170, 185, 169),
  married = are_married
)
# 打印查看
patients_data
           name age height married
Zheng Zheng  27    180    TRUE
Wang Wang  25    170   FALSE
Liu Liu  29    185    TRUE
Li   Li  26    169    TRUE

要检查数据是否为数据框格式,请使用is.data.frame()函数。如果数据是数据框,则返回TRUE:

is.data.frame(patients_data)
[1] TRUE
is.data.frame(my_data)
[1] FALSE

对象“ patients_data”是一个数据框,但不是对象“ my_data”。我们可以使用as.data.frame()函数将其转换为数据框:

# my_data的类型 --> matrix
class(my_data)
[1] "matrix"
# 将它转换为数据框格式
my_data2 <- as.data.frame(my_data)
# Now, the class is data.frame
class(my_data2)
[1] "data.frame"

矩阵部分所述,你可以使用函数t()转置数据框:

t(patients_data)

子集数据框

要仅从数据框中选择某些列,你可以按名称或按其位置(即第1、2、3列等)引用这些列。

  1. 按名称和位置进行正索引
# 访问“名称”列中的数据
# 使用$符号
patients_data$name
[1] Zheng Wang Liu Li 
Levels: Liu Li Zheng Wang
# 或者使用
patients_data[, 'name']
[1] Zheng Wang Liu Li 
Levels: Liu Li Zheng Wang
# 输出第一和第三列
patients_data[ , c(1, 3)]
           name height
Zheng Zheng    180
Wang Wang    170
Liu Liu    185
Li   Li    169

2.按特征索引

我们要选择年龄> = 27的所有病人。

patients_data$age >= 27
[1]  TRUE FALSE  TRUE FALSE
TRUE指定该行包含age> = 27的值。
# 选择符合条件的行
patients_data[patients_data$age >= 27, ]
           name age height married
Zheng Zheng  27    180    TRUE
Liu Liu  29    185    TRUE

上面的R代码命令内容为:R从年龄大于等于27的patients_data获取所有行,然后返回所有列。

如果你不想查看所选行的所有列数据,但只想显示例如年龄大于等于27的病人的病人名称和年龄,则可以使用以下R代码:

patients_data[patients_data$age >= 27,  c(1, 2)]
           name age
Zheng Zheng  27
Liu Liu  29
# 或者
patients_data[patients_data$age >= 27, c("name", "age")]
           name age
Zheng Zheng  27
Liu Liu  29

如果发现选择语句开始变得不方便,则可以先将行和列选择放入变量中,例如:

age27 <- patients_data$age >= 27
cols <- c("name", "age")
然后,你可以选择带有这些变量的行和列:
patients_data[age27, cols]
           name age
Zheng Zheng  27
Liu Liu  29

也可以如下使用函数子集()。

扩展数据框

在数据框中添加新列

#将组列添加到patient_data
patients_data$group <- patient_groups
patients_data
           name age height married           group
Zheng Zheng  27    180    TRUE     recovered_patient
Wang Wang  25    170   FALSE not_recovered_patient
Liu Liu  29    185    TRUE     recovered_patient
Li   Li  26    169    TRUE not_recovered_patient

也可以使用函数cbind()和rbind()扩展数据框。

cbind(patients_data, group = patient_groups)

获取帮助

要阅读有关给定功能的更多信息,例如mean,可以如下使用R函数help():

help(mean)

或使用此:

?mean

如果您觉得我说的还有点意思,请点赞让我感到您的支持,您的支持是我写作最大的动力~ijournal:高颜值的期刊检索网站,助您快速找到理想目标期刊(weixin小程序也上线了哦)投必得:全专业中英文论文润色编辑助力您的论文快速发表,点击了解业务详情

aecd3759c544bfe2a4a2f6a97108db71.png

专栏传送门:
投必得科研软件安装使用手册;投必得:SCI期刊介绍与选择;投必得,教你写论文;投必得统计分析大讲堂;投必得科研生活解忧杂货店

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值