【问题标题】:print the 2nd highest value containing column name by R用 R 打印包含列名的第二个最大值
【发布时间】:2016-06-16 19:44:55
【问题描述】:

我有输入文件

c = structure(c(10, 22, 40, 20, 25, 22, 15, 10, 45, 8, 13, 59), .Dim = 3:4)
     [1] [2] [3] [4]
     10  20  15   8
     22  25  10   13
     40  22  45   59 

我想得到这样的输出 在出现第二高值的地方,它应该将该列名打印到行

[]
3
1
3

我能够通过

提取第二高值
apply(c, 1, function(i) sort(i)[ dim(c)[2]-1])

但我想获取列名而不是值。

【问题讨论】:

  • 您始终可以使用 index() 和找到的值来返回您的值在行中的位置。应该做你想做的(如果你加1)
  • 你能告诉我如何使用 index() 的确切代码行
  • 您使用的是哪个包?这里的“应用”和“暗淡”是未知的。但是在标准 python 列表中: [10, 20, 15, 8].index(15) => 2
  • 好吧,但它应该自动完成,因为我有 1000 个这样的,所以如何创建它
  • 不要忘记考虑值可能不是唯一的。您不能只取倒数第二个排序值,因为它可能与最后一个排序值(即最大值)相同。

标签: r


【解决方案1】:

试试:

> apply(c, 1, order)[3, ]
[1] 3 1 3
> 

或者如果您有超过 4 列 apply(c, 1, order)[ncol(c)-1, ]

顺便说一句,最好不要使用现有函数的名称来命名变量,例如c

【讨论】:

  • @Kapil 为我工作。我在您的问题中添加了更具体的示例数据。下一次,你应该这样做,所以我们确信我们都在看同一件事。
猜你喜欢
  • 2022-09-29
  • 2020-01-11
  • 1970-01-01
  • 2021-08-31
  • 2019-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多