新数据帧,其总和基于另一个数据帧的条件

时间:2018-04-23 08:42:28

标签: r dataframe sum conditional-statements

我对数据框操作有疑问。 我有一个如下所示的数据框:

year | month | deviceCategoy  | sessions

2017 | 4     | desktop        | 140000

2017 | 4     | mobile         | 200000

2017 | 4     | tablet         | 80000

...   ...       ...             ...

总而言之,数据框包含2017年和2018年全年的数据。 现在我想要一个新的数据帧,我只有桌面和移动设备类别。平板电脑的会话应添加到桌面。

结果应如下所示:

year | month | deviceCategoy  | sessions

2017 | 4     | desktop        | 220000

2017 | 4     | mobile         | 200000

有人知道怎么做吗?

1 个答案:

答案 0 :(得分:2)

我们可以改变平板电脑"字符串到"桌面"然后执行aggregate

i1 <- df1$deviceCategoy == "tablet"
df1$deviceCategoy[i1] <- "desktop"
aggregate(sessions ~ ., df1, sum)
#   year month deviceCategoy sessions
#1 2017     4       desktop   220000
#2 2017     4        mobile   200000

或使用tidyverse

library(dplyr)
df1 %>%
   mutate(deviceCategoy = replace(deviceCategoy, deviceCategoy == "tablet", "desktop")) %>%
   group_by_at(names(.)[1:3]) %>% 
   summarise(sessions = sum(sessions))