我有一個數據框,如下面的結構。計算一個組的總值,同時保留數據幀中另一列的信息
# Create example data
ex_df <- data.frame(
Date = as.Date(c("2000-01-01", "2000-01-02", "2000-01-03", "2000-01-03",
"2000-01-04", "2000-01-04", "2000-01-05", "2000-01-05",
"2000-01-05")),
Value = c(1, 3, 1, 2, 5, 2, 1, 3, 1),
Label = c("A", "B", "A", "A",
"B", "A", "A", "A", "B"),
stringsAsFactors = FALSE)
ex_df
# Date Value Label
# 1 2000-01-01 1 A
# 2 2000-01-02 3 B
# 3 2000-01-03 1 A
# 4 2000-01-03 2 A
# 5 2000-01-04 5 B
# 6 2000-01-04 2 A
# 7 2000-01-05 1 A
# 8 2000-01-05 3 A
# 9 2000-01-05 1 B
我想計算每個Date
總Value
,同時保持信息在Label
列。期望的輸出將如下。
# Date Value Label
#1 2000-01-01 1 A
#2 2000-01-02 3 B
#3 2000-01-03 3 A
#4 2000-01-04 7 B
#5 2000-01-05 5 B
在該數據幀中,我想Label
是A
或B
如果全部來自同一Date
的行具有相同的標記,如在2000-01-03
的情況。但是,如果來自同一Date
的行具有不同的標籤,我希望Label
爲B
,例如2000-01-04
和2000-01-05
中的情況。
我知道我可以使用dplyr
包來計算組合總值,如下所示。
library(dplyr)
ex_df %>%
group_by(Date) %>%
summarise(Value = sum(Value))
但我怎麼能保持在Label
列中的信息?我不僅歡迎使用dplyr
的解決方案,還歡迎data.table
,base R或其他軟件包。
謝謝。
這種運作良好。非常感謝你。 @Psidom – www
對於這個特定的情況,有'Label = max(Label)'。只要Label是一個適當的有序因子,它可以更普遍地工作(可能)。 (哦,剛剛看到P顯示了答案中的第一個選項。) – Frank
@Frank同意'max'在這裏是一個很好和簡潔的選項。 – Psidom