【问题标题】:How to get the MIN and MAX from a dataframe SUBSET which consists of factors如何从包含因子的数据帧 SUBSET 中获取 MIN 和 MAX
【发布时间】:2021-04-03 16:55:35
【问题描述】:

我抓取了一个表,需要从数据框中的子集列中检索最小值和最大值。

表格如下所示:

      Date          Year Title         Budget        Gross
2     Jun 22        2018 Project 5     $170,000,000  $1,308,334,005
3     Jun 12        2015 Project 4     $215,000,000  $1,669,943,967
4     Jul 18        2001 Project 3     $93,000,000     $365,900,000
5     May 22        1997 Project 2     $75,000,000     $618,638,999
6     Jun 11        1993 Project 1     $63,000,000   $1,045,573,035

我需要在 Gross 列中找到最小值和最大值。 这目前不起作用,因为该列是向量。但是当我使用 gsub 替换逗号时,它就搞砸了。

我不明白 (1) 如何将向量变为实数 (2) 在这个子集中找到 MIN 和 MAX

(如果这种想法是正确的?)

感谢任何线索

【问题讨论】:

  • 你可能需要df1$Gross <- as.numeric(gsub("[$,]+", "", df1$Gross))然后得到min(df1$Gross)max(df1$Gross)

标签: r dataframe dplyr r-markdown subset


【解决方案1】:

一个tidyverse解决方案:

library(tidyverse)

df %>%
  mutate(across(Gross, parse_number)) %>%
  summarise(across(Gross, list(min = min, max = max)))

  Gross_min  Gross_max
1 365900000 1669943967

【讨论】:

    【解决方案2】:

    我们需要删除,$$ 是正则表达式中的元字符,用于表示字符串的结尾。我们可以将其转义以将它们放在方括号中([$,]+ - 一个或多个字符,$,)并替换为空白("")。然后,我们将该列转换为numeric (as.numeric)

    df1$Gross <- as.numeric(gsub("[$,]+", "", df1$Gross))
    

    现在,我们可以得到minmax

    min(df1$Gross, na.rm = TRUE)
    #[1] 365900000
    max(df1$Gross, na.rm = TRUE)
    #[1] 1669943967
    

    或者使用range函数

    range(df1$Gross, na.rm = TRUE)
    #[1]  365900000 1669943967
    

    数据

    df1 <- structure(list(Date = c("Jun 22", "Jun 12", "Jul 18", "May 22", 
    "Jun 11"), Year = c(2018L, 2015L, 2001L, 1997L, 1993L), Title = c("Project 5", 
    "Project 4", "Project 3", "Project 2", "Project 1"), Budget = c("$170,000,000", 
    "$215,000,000", "$93,000,000", "$75,000,000", "$63,000,000"), 
        Gross = c("$1,308,334,005", "$1,669,943,967", "$365,900,000", 
        "$618,638,999", "$1,045,573,035")), class = "data.frame",
        row.names = c("2", 
    "3", "4", "5", "6"))
    

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      相关资源
      最近更新 更多