首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R在维护一个特定列的同时扩展多个列

R在维护一个特定列的同时扩展多个列
EN

Stack Overflow用户
提问于 2015-09-19 04:04:08
回答 1查看 3.6K关注 0票数 0

好吧,我被要求更具体,并在我提出问题时提供代码。所以我们开始吧!

我需要为数据集("Grade2")中的6列计算z分数,这是我的第9到第14列。第1列是号码ID。第2-8列是人口统计数据。最终,我需要将这些缩放的列附加到我现有的数据框架中。我的方法是:创建缩放分数的数据帧,重命名新数据帧中的列,合并到旧数据帧中。

代码语言:javascript
复制
Grade2z = as.data.frame(scale(Grade2[ ,9:14]))#create new dataframe that ONLY has the scaled CBM and aR scores
colnames(Grade2z) = c("Fallz", "Winterz", "Springz", "aRFallz", "aRWinterz", "aRSpringz")
Grade2 = merge(Grade2, Grade2z)

这导致了一个问题。由于我没有可以合并的ID,它创建了大约40,000个观察值。所以我回去试了一下:

代码语言:javascript
复制
    Grade2z = as.data.frame(scale(Grade2[ ,c(1,9:14)]))#create new dataframe that ONLY has the scaled CBM and aR scores
colnames(Grade2z) = c("Fallz", "Winterz", "Springz", "aRFallz", "aRWinterz", "aRSpringz")
Grade2 = merge(Grade2, Grade2z)

这也不起作用,因为第一列是一个数字向量,因此也进行了缩放。有没有我遗漏的简单解决方案?在不操作原始数据集(Grade2)的情况下,如何在不缩放列1的情况下创建包含列1和9:14的新数据集?

编辑:在这种情况下,实际数据并不重要。它们只是值的字符串。这个随机数据帧应该可以工作。

代码语言:javascript
复制
Grade2 = data.frame(replicate(14, sample(0:50, 1000, rep=FALSE)))
colnames(Grade2)[1] = "ID"
EN

回答 1

Stack Overflow用户

发布于 2015-09-19 04:39:09

代码语言:javascript
复制
Grade2z = as.data.frame(cbind(Grade2[,1,drop=F], scale(Grade2[ ,9:14])))
colnames(Grade2z) = c("ID", "Fallz", "Winterz", "Springz", "aRFallz",  "aRWinterz", "aRSpringz")
Grade2 = merge(Grade2, Grade2z)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32660166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档