R 按星期几筛选数据帧
我有一个网站的每日统计数据框架R 按星期几筛选数据帧,r,dataframe,lapply,sapply,R,Dataframe,Lapply,Sapply,我有一个网站的每日统计数据框架 > head(df,7) date users sessions goalCompletionsAll dow gos gou 1 2014-08-01 3514 5239 90 Friday 0.01717885 0.02561184 2 2014-08-02 3382 4874 99 Saturday 0.0
> head(df,7)
date users sessions goalCompletionsAll dow gos gou
1 2014-08-01 3514 5239 90 Friday 0.01717885 0.02561184
2 2014-08-02 3382 4874 99 Saturday 0.02031186 0.02927262
3 2014-08-03 3981 5499 81 Sunday 0.01472995 0.02034665
4 2014-08-04 4493 6434 99 Monday 0.01538701 0.02203428
5 2014-08-05 4344 6505 111 Tuesday 0.01706380 0.02555249
6 2014-08-06 4091 6117 115 Wednesday 0.01880007 0.02811049
7 2014-08-07 3617 5519 90 Thursday 0.01630730 0.02488250
我需要找到一周中每天的平均值。
这是我的尝试:
> daysOfWeek
[1] "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday"
dailyAverages <- sapply(daysOfWeek, function (x) {
qq <- filter(df, dow==x)
convRate <- qq$goalCompletionsAll/qq$users
run <- data.frame(mean(convRate),sd(convRate),
max(convRate), min(convRate), median(convRate))
names(run) <- c("Mean", "SD", "Max", "Min", "Median")
run
})
> dailyAverages
Monday Tuesday Wednesday Thursday Friday Saturday
Mean 0.02496614 0.0262649 0.02576256 0.02602963 0.026684 0.02440045
SD 0.003603139 0.004615455 0.003891674 0.004525479 0.00445875 0.004779429
Max 0.03266055 0.03274712 0.03141136 0.03543914 0.03673769 0.033213
Min 0.01853659 0.01748487 0.01904376 0.02026432 0.01734417 0.01593625
Median 0.02488883 0.02651838 0.02629004 0.02543797 0.02599134 0.02502503
Sunday
Mean 0.02426048
SD 0.004086276
Max 0.03112314
Min 0.01581155
Median 0.02456262
>daysOfWeek
[1] “星期一”“星期二”“星期三”“星期四”“星期五”“星期六”“星期日”
每日平均值您可以尝试dplyr
。链条/管道操作员(%%>%%
)将“lhs”和“rhs”连接在一起。变量“dow”用作分组变量(group\U by(..
),使用transmute
计算“convRate”,这将删除现有变量,获得“convRate”的平均值
,sd
等使用summary_each
。summary_each
的优点是它可以同时用于多个列
library(dplyr)
df$dow <- substr(df$dow, 1,3)
res <- df %>%
group_by(dow) %>%
transmute(convRate=goalCompletionsAll/users) %>%
summarise_each(funs(mean, sd, max, min, median), convRate)
indx <- match(c('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'), res$dow)
res1 <- res[indx,]
库(dplyr)
df$道指%
转换(convRate=goalCompletionsAll/用户)%>%
总结每个(funs(平均值、标准差、最大值、最小值、中位数)、置信区间)
indx您可以尝试dplyr
。链/管道操作符(%%>%%
)将“lhs”和“rhs”连接在一起。变量“dow”用作分组变量(group\U by(…
),计算“convRate”使用transmute
删除现有变量,使用summary\u each
获得“convRate”的mean
、sd
等。summary\u each
的优点是它可以同时用于多个列
library(dplyr)
df$dow <- substr(df$dow, 1,3)
res <- df %>%
group_by(dow) %>%
transmute(convRate=goalCompletionsAll/users) %>%
summarise_each(funs(mean, sd, max, min, median), convRate)
indx <- match(c('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'), res$dow)
res1 <- res[indx,]
库(dplyr)
df$道指%
转换(convRate=goalCompletionsAll/用户)%>%
总结每个(funs(平均值、标准差、最大值、最小值、中位数)、置信区间)
indx在R中有大量的工具可以实现这一点。查看包plyr、data.table或dplyr。一个值不应该有标准偏差,对吗?@RichardScriven你是对的。这将采用“平均值”这是错误的。尽管如此,问题是关于转换数据的,akrun在下面给出了一个非常有价值的答案。在R中有大量的工具可用于转换。查看包plyr、data.table或dplyr。一个值不应该有标准差,对吗?@RichardScriven你是对的。这将需要“平均值”是错误的。尽管如此,问题是关于转换数据的,akrun在下面给出了一个非常有价值的答案。这几乎是我想要的。我没有对每一个进行变异,而是使用了每个摘要,因为我需要一个摘要。你能帮我安排第一列(道琼斯指数)吗我知道我需要使用排列功能,但我不知道如何使用预定义的顺序(周一、周二、周三……)@IngvarPetrov我更新了帖子。你也可以在指定级别后将dow
转换为factor列后使用arrange
进行更新。在这里,我使用match。这几乎是我想要的。我使用summary\u each而不是mutate\u,因为我需要一个摘要。你能帮我安排第一列(dow)吗到星期几?我知道我需要使用排列功能,但我不知道如何使用预定义的顺序(周一、周二、周三…)@IngVarportov我更新了帖子。你也可以在指定级别后将dow
转换为factor列后使用arrange
。这里,我使用的是match。