楼主: jzq1994
5639 5

[问答] R中如何进行数据(数据框型)的最大—最小标准化 [推广有奖]

  • 2关注
  • 0粉丝

硕士生

27%

还不是VIP/贵宾

-

威望
0
论坛币
13 个
通用积分
155.5774
学术水平
5 点
热心指数
6 点
信用等级
5 点
经验
2743 点
帖子
94
精华
0
在线时间
179 小时
注册时间
2013-1-16
最后登录
2024-8-25

楼主
jzq1994 发表于 2016-10-2 17:41:47 |AI写论文
5论坛币
现在有一个data.frame类型的数据A,A有3列。现在我想实现的效果是将A的每一列数据进行最大—最小标准化之后赋值给新的data.frame B。可能对于各位大神来说,这个问题太简单了,但我刚开始学习R,自己能想到的是使用个循环函数,但总是报错。
for(i in 1:3){
B[,i]<-(A[,i]-min(A[,i]))/(max(A[,i])-min(A[,i]))
}
请问大神们,这个功能该如何实现呢?我这个方法错在哪里呢?非常感谢!

最佳答案

jgchen1966 查看完整内容

请找本在R 中数据操作的书!!
关键词:标准化 数据框 Frame Fram Data 如何

沙发
jgchen1966 发表于 2016-10-2 17:41:48
jzq1994 发表于 2016-10-2 21:28
谢谢,但是如何只操作X的三列呢?因为X的其他列有0-1变量,并不需要标准化
请找本在R 中数据操作的书!!

藤椅
jgchen1966 发表于 2016-10-2 20:13:39
yda<-as.data.frame(lapply(X,function(x) (x-min(x))/(max(x)-min(x))))
X 为data.frame

板凳
jzq1994 发表于 2016-10-2 21:28:12
jgchen1966 发表于 2016-10-2 20:13
yda
谢谢,但是如何只操作X的三列呢?因为X的其他列有0-1变量,并不需要标准化

报纸
zhangyangsmith 发表于 2016-10-3 05:50:13
  1. B <- A
  2. B[1:3] <- lapply(A[1:3], function(dv) ( dv - min(dv) )/diff( range(dv) ) )
复制代码


地板
czrdiao 发表于 2016-10-3 08:07:15
你没有B的申明,在循环前面加一句
B = A

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 22:38