R 如何计算现有行的总和以添加新数据行

问题描述 投票:0回答:2

如何将新的

Category
添加到
comb_df 
中 这个新的值在哪里
newcat

的总和

Category = New
Jan 2014
+
Category = Old
Jan 2014

Category = c("New")
value = c(4,7,6)
Date= c ("Jan 2014", "Feb 2014", "Mar 2014")
#NonDaily = c(4, 7,6 ,8,9,10)

df1 <- data.frame(Category, Date,value,  check.names = FALSE)
Category = c("Old")
value = c(1,2,4)
Date= c ("Jan 2014", "Feb 2014", "Mar 2014")
df2 <- data.frame(Category,Date, value,check.names = FALSE)
comb_df <- rbind(df1,df2)
  Category     Date     value
1      New    Jan 2014     4
2      New    Feb 2014     7
3      New    Mar 2014     6
4      Old    Jan 2014     1
5      Old    Feb 2014     2
6      Old    Mar 2014     4

预期结果

 newcat =
Category = New
Jan 2014
+
Category = Old
Jan 2014

  Category     Date     value  
1      New    Jan 2014     4    
2      New    Feb 2014     7    
3      New    Mar 2014     6     
4      Old    Jan 2014     1
5      Old    Feb 2014     2
6      Old    Mar 2014     4
7   newcat    Jan 2014     5
8   newcat    Feb 2014     9
9   newcat    Mar 2014     10
r dplyr data-wrangling rbind
2个回答
0
投票
  library(dplyr)
  comb_df %>% 
    add_row(Category = "newcat",
            comb_df %>% 
              summarise(value = sum(value), .by = "Date")
            )
  Category     Date value
1      New Jan 2014     4
2      New Feb 2014     7
3      New Mar 2014     6
4      Old Jan 2014     1
5      Old Feb 2014     2
6      Old Mar 2014     4
7   newcat Jan 2014     5
8   newcat Feb 2014     9
9   newcat Mar 2014    10

0
投票

你可以转动更宽然后更长:

comb_df %>%
  pivot_wider(names_from = Category, values_from = value) %>%
  mutate(newcat = sum(New, Old), .by = Date) %>%
  pivot_longer(-Date)
© www.soinside.com 2019 - 2024. All rights reserved.