【问题标题】:obtain the smallest value of a column in relation to the maximum value of another column获得与另一列的最大值相关的列的最小值
【发布时间】:2014-06-15 19:17:28
【问题描述】:

我有一个关于data.frame中值处理的问题。 以下 data.frame 将获取与第二列的最大值在同一行中的第一列的值。 如果第二列有几个相等的最大值,我想在第一列返回它们的最小值

    power   total   found
1   31.0    7   7
2   30.5    8   7
3   30.0    9   8
4   29.5    9   8
5   29.0    9   7
6   28.5    8   7
7   28.0    10  8
8   27.5    10  8
9   27.0    10  8
10  26.5    11  9
11  26.0    11  9
12  25.5    9   8
13  25.0    9   9
14  24.5    8   8
15  24.0    10  9
16  23.5    8   7
17  23.0    9   8
18  22.5    7   7
19  22.0    7   7
20  21.5    7   7
21  21.0    4   4
22  20.5    4   4
23  20.0    3   3
24  19.5    2   2
25  19.0    2   2
26  18.5    2   2
27  18.0    2   2
28  17.5    1   1
29  17.0    1   1
30  16.5    0   0
31  16.0    0   0
32  15.5    0   0
33  15.0    0   0

【问题讨论】:

  • 这是一个在 R 中相当简单的练习。你能分享一下你迄今为止尝试过的东西以及为什么它没有奏效吗?
  • min(dat[dat[,2] == max(dat[,2]),1])
  • 非常感谢大家,我从未在 R 中使用过最大值和最小值,所以我不知道如何使用它们,我帮了很多忙。
  • 我用了下面的代码,但是这些数据肯定不知道如何继续得到自己想要的。 max_total

标签: r dataframe max min


【解决方案1】:
# Create some fake data
set.seed(14)
df = data.frame(power = sample(seq(15,31,0.5),30, replace=TRUE), 
     total= sample(c(0,1,2,3,7:11), 30, replace=TRUE), 
     found=sample(c(0:2,7:9), 30, replace=TRUE))

df$total[c(5,9)] = NA  # Add some missing data

# Minimum of `power` at maximum of `total`
min(df$power[df$total==max(df$total, na.rm=TRUE)], na.rm=TRUE)
[1] 17.5

如果你想查看power的所有值在total的最大值:

df$power[df$total==max(df$total, na.rm=TRUE)]
[1]   NA   NA 17.5 25.0 30.5 31.0

如果您不想返回缺失值,可以使用which 函数:

df$power[which(df$total==max(df$total, na.rm=TRUE))]
[1] 17.5 25.0 30.5 31.0

which 仅返回逻辑测试为TRUE 的行索引,而单独的逻辑测试为每一行返回值TRUEFALSENA

【讨论】:

    猜你喜欢
    • 2020-05-20
    • 2018-08-25
    • 2017-11-07
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    相关资源
    最近更新 更多