【问题标题】:New dataframe with sums based on conditions of another dataframe基于另一个数据帧条件的总和的新数据帧
【发布时间】:2018-10-03 05:52:15
【问题描述】:

我有一个关于数据框操作的问题。 我有一个如下所示的数据框:

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

有人知道怎么做吗?

【问题讨论】:

  • 你能显示预期的输出吗?试试i1 < df1$deviceCategory == "tablet"; df1$deviceCategory[i1] <- "desktop"; aggregate(sessions ~ year + deviceCategory, df1, sum)
  • 我在问题中添加了预期的输出。

标签: r dataframe sum conditional-statements


【解决方案1】:

我们可以将“tablet”字符串更改为“desktop”,然后执行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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2023-03-27
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    相关资源
    最近更新 更多