好吧,我被要求更具体,并在我提出问题时提供代码。所以我们开始吧!
我需要为数据集("Grade2")中的6列计算z分数,这是我的第9到第14列。第1列是号码ID。第2-8列是人口统计数据。最终,我需要将这些缩放的列附加到我现有的数据框架中。我的方法是:创建缩放分数的数据帧,重命名新数据帧中的列,合并到旧数据帧中。
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个观察值。所以我回去试了一下:
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的新数据集?
编辑:在这种情况下,实际数据并不重要。它们只是值的字符串。这个随机数据帧应该可以工作。
Grade2 = data.frame(replicate(14, sample(0:50, 1000, rep=FALSE)))
colnames(Grade2)[1] = "ID"发布于 2015-09-19 04:39:09
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)https://stackoverflow.com/questions/32660166
复制相似问题