【问题标题】:Group value for column given other column给定其他列的列的组值
【发布时间】:2020-07-14 15:30:16
【问题描述】:

我想为column2中的每个值计算column 1的值

我查看了group_bysummarizesum,但我不明白它的窍门。

我试过例如:

df <- data0 %>%
group_by(Room) %>%
summarize(count = n()) %>% 
mutate(Timespend = sum(Time))

总结就是看一个房间被使用了多少次。现在我想看看 Room X 被使用了 100 次(我有这个),总时间为 300 小时

例子:

Activity Room Time Date
Math     C123 3.50 2019/10/10
Physics  C123 1.5  2019/10/10
English  C123 2.5  2019/10/11 
Math     C124 3.20 2019/10/10
Physics  C124 2.5  2019/10/10
English  C124 1.5  2019/10/11

所有活动都发生在 C123 和 C124 房间,我想查看在给定房间内进行活动的总时间

所以是这样的:

Room Count Timespend
C123 3     7.5
C124 3     7.2

当然还有更多的房间和更多的约会,但这个示例给出了精髓。

输入:

structure(list(Activity = c("Math", "Physics", "English", "Math", 
"Physics", "English"), Room = c("C123", "C123", "C123", "C124", 
"C124", "C124"), Time = c(3.5, 1.5, 2.5, 3.2, 2.5, 1.5), Date = structure(c(1570665600, 
1570665600, 1570752000, 1570665600, 1570665600, 1570752000), class = c("POSIXct", 
"POSIXt"), tzone = "UTC")), row.names = c(NA, -6L), class = c("tbl_df", 
"tbl", "data.frame"))

【问题讨论】:

  • 不应该是7.5和7.2吗?
  • 您在寻找df %&gt;% group_by(Room) %&gt;% summarise(Count = n(), Timespend = sum(Time)) 吗?
  • @StupidWolf 是的,应该。
  • @dc37 我用示例中的变量名更新了我尝试过的代码
  • 您可以使用group_bysummarise 完成这一切:data0 %&gt;% group_by(Room) %&gt;% summarise(Timespend = sum(Time), Count = n())

标签: r


【解决方案1】:

试试这个:

df <- data0 %>% group_by(room) %>% 
  mutate(Timespend = sum(Tdiff),
         n = 1:n()) %>%
  filter(n == 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 2020-11-07
    • 1970-01-01
    • 2015-03-31
    • 2020-12-29
    • 2021-12-19
    • 2021-08-28
    相关资源
    最近更新 更多