我正在尝试处理我拥有的数据框,但我很难找到与名称相关的最新日期以及与名称相关的总和。我的框架看起来像这样
a<-
Date Name Sum
<date> <chr> <dbl>
23.02.2017 Johnny 6
24.02.2017 Jane 20
24.02.2017 Micky Mouse 20
27.02.2017 Jane 20
3.03.2017 Johnny 20
3.03.2017 Ronald 25
我想得到类似的东西
b<-
Latest Date Name Frequency Total Sum
<date> <chr> <dbl> <dbl>
3.03.2017 Johnny 2 26
27.02.2017 Jane 2 40
24.02.2017 Micky Mouse 1 20
3.03.2017 Ronald 1 25
我开始使用表函数然后使用for循环,但我有点像菜鸟。
b <- data.frame(table(a$Name))
# after cleaning
b<-
Name Frequency
<chr> <int>
Johnny 2
Jane 2
Micky Mouse 1
Ronald 1
for (i in (a$Name)) {
b <- a %>%
mutate(Total Sum = sum(a$Sum[a$Name == i] %>%
mutate(Latest Date = max(a$date[a$Name == i]))
}
这会返回一个看起来像这样的数据框
b<-
Name Frequency Total Sum Latest Date
<chr> <int> <dbl> <date>
Johnny 2 40 27.02.2017
Jane 2 40 27.02.2017
Micky Mouse 1 40 27.02.2017
Ronald 1 40 27.02.2017
我怎样才能确保总和只是约翰尼,简......以及日期是与该名称相关的最新日期
答案 0 :(得分:0)
这应该有效:
df <- read.table(text = "Date Name Sum
1 23.02.2017 Johnny 6
2 24.02.2017 Jane 20
3 24.02.2017 Micky_Mouse 20
4 27.02.2017 Jane 20
5 3.03.2017 Johnny 20
6 3.03.2017 Ronald 25")
df%>%group_by(Name)%>%
mutate(Date_Formated = as.Date(Date, format = "%d.%m.%Y"))%>%
summarise(totalByName = sum(Sum),firstDate = max(Date_Formated))
# A tibble: 4 x 3
Name totalByName firstDate
<fctr> <int> <date>
1 Jane 40 2017-02-24
2 Johnny 26 2017-02-23
3 Micky_Mouse 20 2017-02-24
4 Ronald 25 2017-03-03
答案 1 :(得分:-3)
您可以使用M
R套餐中的group_by
和summarise
。
dplyr