R 如何在名称旁边添加总小时数

R 如何在名称旁边添加总小时数,r,R,在数据集中,我试图将一年中的总工作小时数相加,而我的报告则逐行列出 本质上,它类似于在Excel中使用sumproduct(仅在名称与前一列匹配时添加小时数) R中用来做类似事情的代码是什么 例如 我想创建另一列,计算John的总数为16,Hailey的总数为19。使用data.table: library(data.table) setDT(mydata) mydata[, totalHours := sum(hourCol), Name] 这应该能奏效 使用data.table: libr

在数据集中,我试图将一年中的总工作小时数相加,而我的报告则逐行列出

本质上,它类似于在Excel中使用sumproduct(仅在名称与前一列匹配时添加小时数)

R中用来做类似事情的代码是什么

例如

我想创建另一列,计算John的总数为16,Hailey的总数为19。

使用data.table:

library(data.table)
setDT(mydata)
mydata[, totalHours := sum(hourCol), Name]
这应该能奏效

使用data.table:

library(data.table)
setDT(mydata)
mydata[, totalHours := sum(hourCol), Name]

这应该能奏效

这是使用dplyr的可能解决方案之一:

library(dplyr)

df <- data.frame(names = c("Emily", "John", "Emily", "Mike", "John"), hours = c(6, 7, 8, 5, 6))

df %>%
group_by(names) %>%
summarise(totals = sum(hours)) -> d
库(dplyr)
df%
分组人(姓名)%>%
总结(总计=总计(小时))->d

这是使用dplyr的可能解决方案之一:

library(dplyr)

df <- data.frame(names = c("Emily", "John", "Emily", "Mike", "John"), hours = c(6, 7, 8, 5, 6))

df %>%
group_by(names) %>%
summarise(totals = sum(hours)) -> d
库(dplyr)
df%
分组人(姓名)%>%
总结(总计=总计(小时))->d

您可以像这样使用
doBy
软件包:

require(doBy)
summaryBy(hours_field ~ name_field, data = mydata, FUN = sum)

您可以像这样使用
doBy
包:

require(doBy)
summaryBy(hours_field ~ name_field, data = mydata, FUN = sum)

使用聚合的基本R解决方案

Hours = read.table(text="Name hours
'John Smith' 8
'John Smith' 8
Hailey 9
Hailey 10", 
header=TRUE)

aggregate(Hours$hours, list(Hours$Name), sum)
     Group.1  x
1     Hailey 19
2 John Smith 16

使用聚合的基本R解决方案

Hours = read.table(text="Name hours
'John Smith' 8
'John Smith' 8
Hailey 9
Hailey 10", 
header=TRUE)

aggregate(Hours$hours, list(Hours$Name), sum)
     Group.1  x
1     Hailey 19
2 John Smith 16

将来,为了清晰起见,请尝试使用
dput(mydata)
添加数据样本。将来,为了清晰起见,请尝试使用
dput(mydata)
添加数据样本。它与
aggregate
不同吗?它应该产生与
聚合(mydata$hours\u字段,list(mydata$name\u字段),sum)类似的结果
aggregate
还可以使用语法
aggregate(hours\u field~name\u field,data=mydata,FUN=sum)
似乎
doBy
提供了有趣的附加参数,但是在这个简单的例子中,我相信它是严格等价的,它不同于
aggregate
?它应该产生与
aggregate(mydata$hours\u字段,list(mydata$name\u字段),sum)相同的结果
aggregate
也适用于语法
聚合(hours\u字段~name\u字段,data=mydata,FUN=sum)
似乎
doBy
提供了有趣的附加参数,但在这个简单的例子中,我相信它是严格等价的