Как добавить общее количество часов рядом с именем - PullRequest
0 голосов
/ 30 мая 2018

В наборе данных я пытаюсь сложить общее количество отработанных часов за год, в то время как мой отчет перечисляет их построчно.

По сути, это похоже на то, для чего использовался бы суппродукт вExcel (добавление только часов, если имя соответствует предыдущему столбцу)

Какой код в R используется для аналогичной операции?

EG

John Smith   8
John Smith   8
Hailey       9
Hailey      10

Я хотел бы создать еще один столбец, который вычисляет общее количество Джона как 16, а Хейли как 19.

Ответы [ 4 ]

0 голосов
/ 30 мая 2018

Базовый раствор R с использованием aggregate

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
0 голосов
/ 30 мая 2018

Это одно из возможных решений с использованием 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
0 голосов
/ 30 мая 2018

Вы можете использовать пакет doBy следующим образом:

require(doBy)
summaryBy(hours_field ~ name_field, data = mydata, FUN = sum)
0 голосов
/ 30 мая 2018

Использование data.table:

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

Это должно сработать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...