我想根据每列的平均值对每行数据进行排名 在这里您可以找到示例数据
https://gist.github.com/anonymous/2c69
我通过
计算行的平均值和每行和每列的平均值C <- colMeans(data, na.rm = FALSE, dims = 1)
R <- rowMeans(data, na.rm = FALSE, dims = 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