r语言apply函数用法_r语言apply函数mean
基于R语言的数据标准化处理脚本
方法二、基于R语言的数据标准化处理脚本
r语言apply函数用法_r语言apply函数mean
r语言apply函数用法_r语言apply函数mean
第三步,如果想要获取第五列数据,可以使用t[5,],如下图所示:
数据标准化(Normalization)
print(result)将数据按比例缩放,使之落入一个小的特定区间。去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。
数据无量纲化处理主要解决数据的可比性。数据标准化的方法有很多种,常用的有“最小—标准化”、“Z-score标准化”和“按小数定标标准化”等。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。
负向指标:(max-x)/(max-min)
其中max为样本数据的值,min为样本数据的最小值。这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
R语言实现
# 标准化处理
min.max.norm <- function(x){
((x-min(x))/(max(x)-min(x)))
} #正向指标
max.min.norm <- function(x){
((max(x)-x)/(max(x)-min(x)))
data_2 <- apply(data[,c(3,4)],2,max.min.norm) #负向指标处理
#注意array只能用在二维及以上
data_t <- cbind(data_1,data_2)
r语言如何求矩阵中某一列的总和
也叫离标准化,是对原始数据的线性变换,使结果落在[0,1]区间,转换函数如下:步,声明矩阵t,利用矩阵函数matrix,nrow为5,ncol为5,并打印矩阵t,如下图所示:
第二步,获取矩阵t第四列数据,可以直接使用t[,4],这样可以获取到第四列数据,如下图所示:
第四步,如果想要获取第三行# Get the minimum value for each column和第四列交叉点的数据,使用t[3,4],如下图所示:
第五步,获取某一行的一列或两列以上的数据,使用t[1,c(3,5)],表示获取行和第三行、第五个交叉点的数据,如下图所示:
第六步,如果想要获取第二行、第三行和第二列的数据,利用t[c(2,3)# 创建一个数据框,2],如下图所示:
设矩阵为A
方法一、
colSums(A)
apply(A,2,sum)
《R语言实战》自学笔记28-将函数应用于矩阵和数据框
lapply函数将函数应用于输入变量x的每一个元素,返回一个与x长度相同的列表。x可以是列表,向量或数据框。R函数的诸多有趣特性之一,就是它们可以应用到一系列的数据对象上,包括标量、向量、矩阵、数组和数据框。
MARGINR中提供了一个apply()函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上。
apply(x, MARGIN, FUN, ..., simplify = TRUE)
其中,x为数据对象,可以是数组、矩阵、数据框,数据至少是二维的,MARGIN是维度的下标,MARGIN=1表示行,MARGIN=2表示列。FUN是自定义调用的函数,可为任意R函数,而...则包括了任何想传递给FUN的参数。
apply函数只能用于处理矩阵类型的数据,也就是说所有的数据必须是同一类型。因此要使用apply函数的话,需要将数据类型转换成矩阵类型。
lapply(x, FUN)
sapply(x, FUN)
tapply(X, INDEX, FUN = NULL)
tapply用于数据框类型的数据,可以按因子变量分组计算统计量。 X可以是数组、矩阵、数据框等分割型数据向量,INDEX是一个或多数据准备个因子的列表,每个因子的长度都与x相同,FUN为自定义的调用函数。 53
参考资料:
R语言为什么用了mad函数会丢失列名?
# 重新为结果添加列名使用mad函数计算数据的中位数离时,R语言默认将列名设置为NULL。这是因为mad函数返回的是一个向量,而向量不支持列名。
data_1 <- apply(data[,-c(3,4)],2,min.max.norm) #正向指标处理如果需要保留列名,可以使用apply函数和MARGIN参数来计算每列的中位数离,并使用colnames函数重新为结果添加列名。具体代码如下:
scss
df <- data.frame(x = c(1, 2, 3), y = c(4, 5, 6), z = c(7, 8, 9))
colnames(df) <- c("A", "B", "C")
# 使用apply函数计算每列的mad值
mad_result <- apply(df, MARGIN = 2, mad)
colnames(mad_result) <- colnames(df)
# a vector giving the subscripts which the function will be applied over. E.g., for a matrix 1 indicates rows, 2 indicates columns, c(1, 2) indicates rows and columns. Where X has named dimnames, it can be a character vector selecting dimension names.输出结果
print(mad_result)
这样就可以计算每列的中位数离,并保留列名。
r语言中如何实现数据标准化(每一列的值除以该列均值)?
数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。使用apply函数apply(mat, 2, function(x)x/(mean(x)))
测试运行结果:
> ma <- matrix(c(1:4, 1, 6:8), nrow = 2)
> ma
[,1] [,2] [,3] [,4]
[1,] 1 3 1 7
[2,] 2 4 6 8
> apply(ma, 2, function(x)x/(mean(x)))
[,1] [,2] [,3] [,4]
[1,] 0.6666667 0.8571429 0.2857143 0.9333333
[2,] 1.3333333 1.1428571 1.7142857 1.0666667
apply(X, MARGIN, FUN, ...)
Arguments
Xan arr} #负向指标ay, including a matrix.
apply函数参数帮助。FUN
the function to be applied: see ‘Details’. In the case of functions like +, %%, etc., the function name must be backquoted or quoted.
...
optional arguments to FUN.
用R语言读取文本文件并求出每一列的值、最小值、中位值等,将其在屏幕中输?
x可以是列表,矩阵或数据框,以向量或矩阵形式输出结果。执行的功能与lapply函数相同。首先,要使用 R 语言读取文本文件,你可以使用 read.ta正向指标:(x-min)/(max-min)ble 函数:
data <- read.table("filename.txt", header = TRUE)
然后,要求出每一列的值、最小值、中位值,你可以使用 apply 函数:
# Get the maximum value for each column
apply(data, 2, max)
apply(damin-max标准化(Min-max normalization)ta, 2, min)
# Get the median for each column
apply(data, 2, median)
,将计算结果输出到屏幕,可以使用 print 函数:
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。