【问题标题】:Extract maxmimum and minimum from head() function?从 head() 函数中提取最大值和最小值?
【发布时间】:2019-09-23 16:38:13
【问题描述】:

我正在分析向量片段,为此我需要提取它们的最大值。

执行此操作的正常方法是使用max(vector, na.rm = TRUE)。 但是,在某些段中,向量的实际最大值并未出现,因此它给出了向量的该段的最大值。

为此,我想从 head() 函数中提取最大值,如下所示:

library(expss)

nps = c(-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1)

var_lab(nps) = "Net promoter score"
val_lab(nps) = num_lab("-1 Detractors
                         0 Neutralists    
                         1 Promoters")

head(nps)

Output:
Detractors  -1  Detractors      
Neutralists  0  Neutralists     
Promoters    1  Promoters

在这种情况下,我想从中间列中提取“1”。我尝试将 head() 的输出转换为数据帧,但这只是给出了向量的前 5 个值。有什么想法吗?

【问题讨论】:

  • 它看起来不像vector。是data.framemax(head(vector)$value) 和range(head(vector)$value)
  • @akrun head() 输出看起来不像数据框。这就是我使用该代码得到的结果:Error in head(df$E033)$value : $ operator is invalid for atomic vectors
  • 好的,请用dput(head(vector))更新您的帖子,可能是matrix
  • @akrun 我使用了dput(head(vector)),它给了我这个:structure(c(6, 5, 5, 4, 5, 5), labels = c(`Missing; Unknown` = -5, `Not asked in survey` = -4, `Not applicable` = -3, `No answer` = -2, `Don´t know` = -1, Left = 1, `2` = 2, `3` = 3, `4` = 4, `5` = 5, `6` = 6, `7` = 7, `8` = 8, `9` = 9, Right = 10), class = "labelled")
  • 结构是否正确。我没有得到您在帖子中显示的相同输出。有什么要加载的包吗?

标签: r max min head


【解决方案1】:

如果您的所有值都有标签,那么最简单的方法是从值标签中提取最大值:

library(expss)
vec = structure(c(6, 5, 5, 4, 5, 5), labels = c(`Missing; Unknown` = -5, `Not asked in survey` = -4, `Not applicable` = -3, `No answer` = -2, `Don´t know` = -1, Left = 1, `2` = 2, `3` = 3, `4` = 4, `5` = 5, `6` = 6, `7` = 7, `8` = 8, `9` = 9, Right = 10), class = "labelled")

max(val_lab(vec))
# 10

如果你的向量有一些没有标签的值,那么你可以使用unique:

nps = c(-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1)
var_lab(nps) = "Net promoter score"
# no label for 1
val_lab(nps) = num_lab("-1 Detractors
                         0 Neutralists")
# nmax = 1 indicate that unique will return values from vector and values from labels 
max(unique(nps, nmax = 1))

【讨论】:

    【解决方案2】:
    nps = c(-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1)
    
    var_lab(nps) = "Net promoter score"
    val_lab(nps) = num_lab("-1 Detractors
                             0 Neutralists
                             1 Promoters")
    
    max(stack(attr(nps, 'labels'))$values)
    [1] 1
    

    此解决方案源自此处的答案:Extract values and labels of labelled data

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 2013-04-09
      • 2019-11-22
      • 2014-10-17
      • 1970-01-01
      • 2021-07-30
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多