我有一个不容易克服的问题。我有一个包含分类和连续变量的数据集,我想只使用整个列的平均值来贬低连续变量(显然是因为你不能贬低分类变量)。
这就是我所拥有的:
center_colmeans <- function(x) {
xcenter = colMeans(x)
x - rep(xcenter, rep.int(nrow(x), ncol(x)))
}
center_colmeans(Data)
但是,我不知道如何表明我不想贬低分类变量,因此我收到错误。有没有一种简单的方法可以解决这个问题?
我的数据集的一个例子可以上床(变量国家给我带来了困难):
Country<- c('BE','BE','DE','GR','IT','ES','DE','NL')
Landvalue<- c(21000, 23400, 26800, 15000,18000,23000,19000,23000)
Temperature <- c('15','16','14','18','23','21','12','15')
Data <- data.frame(Country, Landvalue, Temperature)
输出应该变为(每列的每个观察值减去每列的平均值):
Country<- c('BE','BE','DE','GR','IT','ES','DE','NL')
Landvalue<-c(-150, 2250,5650,-6150,-3150,1850,-2150,1850)
Temperature<-c(-1.75, -0.75, -2.75, 1.25, 6.25, 4.25,-4.75, -1.75)
OutputData <- data.frame(Country, Landvalue, Temperature)
非常感谢!
答案 0 :(得分:1)
尝试:
Data[,sapply(Data, is.numeric)] <- apply(Data[sapply(Data, is.numeric)], 2, function(x) scale(x, scale = FALSE))
Data
Country Landvalue Temperature
1 BE -150 -0.875
2 BE 2250 0.125
3 DE 5650 -1.875
4 GR -6150 1.125
5 IT -3150 3.125
6 ES 1850 2.125
7 DE -2150 -2.875
8 NL 1850 -0.875