[英]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_convert
的readr
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.