簡體   English   中英

用 R dplyr 中的條件總結

[英]Summarizing with condition in R dplyr

我有一個數據集,其中包含人們按月份和類別在各種項目上花費的時間,如下所示:

person | project | date | time 
--------------------------------
  A   |    a     |  Jan  |  1
  A   |    b     |  Jan  |  2
  A   |    c     |  Jan  |  3
  A   |    d     |  Feb  |  1
  B   |    a     |  Feb  |  2
  B   |    b     |  Feb  |  3
  B   |    c     |  Feb  |  1
--------------------------------

我需要按日期按個人進行總結,其中包括花費的總時間花費在其中一個項目上的部分時間(假設為“a”),即:

person |   date     |  Total | project:a 
--------------------------------
  A    |    Jan     |  6     |  1
  A    |    Feb     |  1     |  0
  B    |    Jan     |  0     |  0
  B    |    Feb     |  6     |  2
--------------------------------

我在不同的類似問題中找到了一個小代碼,但沒有給出正確的結果:

data %>% group_by(person, date) %>% summarise(total = sum(time), `project:a` = sum(time[project == "a"]))

它正確地計算出total金額,但不與條件的總和-它主要是返回NA 可能是什么問題? 謝謝。

如果您有因子列,請嘗試使用type.convert

df %>% 
  type.convert %>% 
  group_by(person, date, .drop = FALSE) %>% 
  summarise(Total = sum(time), project_a = sum(time[project == "a"]))

#  person date  Total project_a
#  <fct>  <fct> <int>     <int>
#1 A      Feb       1         0
#2 A      Jan       6         1
#3 B      Feb       6         2
#4 B      Jan       0         0

我們可以使用type_convertreadr

 library(dplyr)
 library(readr)
 df %>%
   type_convert %>%
    group_by(person, date) %>%
    summarise(Total = sum(time), project_a = sum(time[project == "a"]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM