尝试修复R代码,该代码将为R

时间:2018-12-13 21:37:38

标签: r sorting dataframe

我有一个数据帧,每个数据帧中有一个公司的每个人的各种属性的整数数据的10个变量,我需要知道与此数据帧中每一行相关的最高5个变量。除了5个最高变量名之外,我还需要知道每行对应的10个最高变量值。

下面是一个简单的示例(列名=与员工相关的整数变量,行名=人员ID)。

    set.seed(1)
DF <- matrix(sample(1:9,9),ncol=10,nrow=9)
DF <- as.data.frame.matrix(DF)
>DF

这将导致示例数据帧如下:

#   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
# 1  3  2  5  6  5  2  6  8  1   3
# 2  1  4  7  8  7  7  3  4  2   9
# 3  2  3  4  7  5  8  9  1  3   5
# 4  3  8  3  4  5  6  7  4  6   5
# 5  6  2  3  7  2  1  8  3  2   4
# 6  8  2  4  8  3  2  9  7  6   5
# 7  1  5  3  6  8  3  8  9  1   3
# 8  9  3  5  8  4  9  7  8  1   2
# 9  1  2  4  8  3  2  1  2  5   6

**我理想的输出应该是这样的:**

#      V1   V2   V3   V4   V5
# 1  V2:9 V7:8 V8:7 V4:6 V3:5
# 2  V9:9 V3:8 V5:7 V7:6 V4:5
# 3  V5:9 V3:8 V2:7 V9:6 V7:5
# 4  V8:9 V4:8 V2:7 V5:6 V9:5
# 5  V9:9 V1:8 V6:7 V3:6 V5:5
# 6  V8:9 V1:8 V5:7 V9:6 V4:5
# 7  V2:9 V8:8 V7:7 V5:6 V9:5
# 8  V4:9 V7:8 V9:7 V2:6 V8:5
# 9  V3:9 V7:8 V8:7 V4:6 V5:5
# 10 V6:9 V8:8 V1:7 V9:6 V4:5

我试图使用以前建议的代码,但这似乎不起作用:

out <- t(apply(DF, 1, function(x){
  o <- head(order(-x), 5)
  paste0(names(x[o]), ':', x[o])
}))
as.data.frame(out)

谢谢!

0 个答案:

没有答案