R中的重构向量

时间:2012-03-14 17:27:41

标签: r vector

如果我有一个包含说(年龄,体重,城市,城镇,高度)的文件,有没有办法重组文件,以便所有的数字数据eithier来到第一或第二,如(年龄,体重,身高,城市) ,镇)以一种简单的方式。我想知道这个,因为我有大约10列长的数字和非数字数据,并且只使用min / max只有数字字段进行标准化,如果它们都在我的数据集的一半中会更快,所以我可以使用一个循环。对不起,我是R的新手,我在mac os中使用它,如果这很重要的话。

2 个答案:

答案 0 :(得分:2)

构建示例data.frame:

dat <- data.frame(age=runif(10), weight=runif(10), city="New York", town="any", height=runif(10))

这就是你可以订购列的方式:

dat.ordered <- dat[,order(sapply(dat,is.numeric), decreasing=T)]

答案 1 :(得分:0)

为什么还要重新排序列,当你可以简单地循环它们并根据需要缩放数字?

dat <- data.frame(x1 = runif(10),
                  x2 = letters[1:10],
                  x3 = rnorm(10),
                  x4 = LETTERS[1:10])

data.frame(lapply(dat,function(x){if (is.numeric(x)) scale(x) else x}))

使用一些方便的 plyr 功能的解决方案,虽然有点奇怪,但仍然有点奇怪:

require(plyr)
colwise(function(x){if (is.numeric(x)) scale(x) else x})(dat)

版本numcolwisecatcolwise也可能有一些兴趣(尽管它们只返回它们所依据的列)。