【问题标题】:Summarizing data and also showing the raw data below汇总数据并显示下面的原始数据
【发布时间】:2018-02-19 19:20:05
【问题描述】:

说我有数据看起来像这样

  vehicle <- c(1,2)
  no_of_visits <- c(3,2,4,3,1)
  duration <- c(20,30,18,15,20)
  bind <- cbind(vehicle, no_of_visits, duration)

 vehicle| no_of_visits | duration
  ----------------
   1 | 3 | 20
  ------------
   1 | 2 | 30
  ------------
   1 | 4 | 18
  -----------
   2 | 3 | 15
  -----------
   2 | 1 | 20
  -----------

而且,我想在一行中显示汇总值,在下面我想显示这些汇总值

现在应该是这个样子

  vehicle|no_of_visits|duration
 ----------------------------
          1 | 9 | 68
          --------
          --------
          1 | 3 | 20
          --------
          1 | 2 | 30
          --------
          1 | 4 | 18
           -------
          2 | 4 | 35
           -------
           -------
          2 | 3 | 15
           -------
          2 | 1 | 2
           -------

如何让它发挥作用?

谢谢

【问题讨论】:

    标签: r list dplyr summarize


    【解决方案1】:

    通过使用dplyr

    library(dplyr)
    
    bind=data.frame(bind)
    target=rbind(bind,bind%>%group_by(vehicle)%>%dplyr::summarise_all(sum)
    target=target[order(target$vehicle,-target$no_of_visits),]
    
    target
      vehicle no_of_visits duration
    6       1            8       58
    3       1            4       18
    1       1            3       20
    5       1            1       20
    7       2            5       45
    4       2            3       15
    2       2            2       30
    

    编辑:对你的额外要求

    vehicle <- c(1,2)
    no_of_visits <- c(3,2,4,3,1)
    duration <- c(20,30,18,15,20)
    drivername <- c('a','b') 
    bind <- cbind(vehicle, no_of_visits, duration,drivername)
    bind=data.frame(bind,stringsAsFactors = F)
    bind$vehicle=as.numeric(as.character(bind$vehicle))
    bind$no_of_visits=as.numeric(as.character(bind$no_of_visits))
    bind$duration=as.numeric(as.character(bind$duration))
    bind$drivername=(as.character(bind$drivername))
    

    第一个选项:

    target=rbind(bind,data.frame(bind%>%group_by(vehicle,drivername)%>%dplyr::summarise_all(sum)))
    
    target[order(target$vehicle,-target$no_of_visits),]
    
      vehicle no_of_visits duration drivername
    6       1            8       58          a
    3       1            4       18          a
    1       1            3       20          a
    5       1            1       20          a
    7       2            5       45          b
    4       2            3       15          b
    2       2            2       30          b
    

    第二个选项

    bind1=bind %>% 
        group_by(vehicle) %>% 
        summarise_each(funs(if(is.numeric(.)) sum(., na.rm = TRUE) else first(.)))
    
    target=rbind(bind,bind1)
    target[order(target$vehicle,-target$no_of_visits),]
      vehicle no_of_visits duration drivername
    6       1            8       58          a
    3       1            4       18          a
    1       1            3       20          a
    5       1            1       20          a
    7       2            5       45          b
    4       2            3       15          b
    2       2            2       30          b
    

    【讨论】:

    • 嗨,谢谢您的回答,它正在工作。如果还有 2 个变量,比如司机姓名 a,b 司机“a”驾驶“车辆 1”,“b”驾驶“车辆 2”,另一个变量是模型“Y”(车辆:1 和 2 是同一模型)车辆
    • @Chaitan_ya 你能提供更新的数据吗?我想我可以帮助你处理数据 ~ :)
    • @Chaitan_ya 更新了~,顺便说一句,你的声望达到了 15,你现在可以为你喜欢的答案投票~:)
    【解决方案2】:

    您可以summarize,然后bind_rows 与原始数据框:

    bind_df <- as.data.frame(bind)
    
    bind_df %>% 
        group_by(vehicle) %>% 
        summarise_all(sum) %>% 
        bind_rows(bind_df) %>% 
        arrange(vehicle)
    
    # A tibble: 7 x 3
    #  vehicle no_of_visits duration
    #    <dbl>        <dbl>    <dbl>
    #1       1            9       68
    #2       1            3       20
    #3       1            2       30
    #4       1            4       18
    #5       2            4       35
    #6       2            3       15
    #7       2            1       20
    

    【讨论】:

    • 请注意,你也是 R 用户!!:)
    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2019-08-16
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    相关资源
    最近更新 更多