我们如何根据每列的平均值对矩阵的行进行排名?

时间:2015-02-11 09:20:29

标签: r

我想根据每列的平均值对每行数据进行排名 在这里您可以找到示例数据

https://gist.github.com/anonymous/2c69

我通过

计算行的平均值和每行和每列的平均值
C <- colMeans(data, na.rm = FALSE, dims = 1)
R <- rowMeans(data, na.rm = FALSE, dims = 1)

然后我将每行均值除以每列均值并以某种方式对它们进行排名。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在我们读取数据集(read.table('Nemo.txt'....))之后,删除第一个字符列(data2 <- data[,-1]),获取行均值和列均值并将其扩展到“行/列”({{ 1}}),划分并创建一个矩阵“m1”。如果我们需要获取“m1”中每列的行“排名”,请使用rowMeans(...)[row(data)]中的mutate_each

dplyr

但是,假设我们需要得到每行的聚合data <- read.table('Nemo.txt', header=TRUE, stringsAsFactors=FALSE) data2 <- data[,-1] m1 <- rowMeans(data2, na.rm=FALSE, dims=1)[row(data2)]/colMeans(data2, na.rm=FALSE, dims=1)[col(data2)] dim(m1) <- dim(data2) library(dplyr) d1 <- as.data.frame(m1) d1 %>% mutate_each(funs(rank(., ties.method='min'))) ,(不确定这是否是你想要的),也许我们可以获得行“m1”并对其进行排名。

rank

然后根据rnk对原始数据进行排名如下:

rnk <- rank(rowMeans(m1)) 
head(rnk)
#[1] 1234 1557 1052 1176  575  290