我有如下的数据框结构
UITableViewDelegate
我想计算所有数字和int列的平均值。如何在dplyr中完成?
我做了类似的事
$ Lead.Score : int 105 120 150 60 80 0 80 0 80 145
$ Average.Time.Per.Visit : num 0 83.8 4 0 0 ...
$ TotalVisits : int 0 5 2 1 2 0 2 0 2 4 ...
$ Page.Views.Per.Visit : num 0 2.5 2 1 1 0 2 0 2 4 ...
$ Average.Time.Per.Visit.1 : num 0 83.8 4 0 0 ...
$ Last.Activity : chr "Page Visited on Website" "Email
$ Last.Activity.Date : POSIXct, format: NA NA ...
$ First.Landing.Page.Submission.Date: POSIXct, format: NA NA ...
$ Created.On : POSIXct, format: "2016-07-31 17:11:00"
但它不起作用。
答案 0 :(得分:1)
我们可以使用summarise_if
train_webdata %>%
group_by(Lead.Stage) %>%
summarise_if(is.numeric, mean, na.rm = TRUE)
使用可重现的例子
data(iris)
iris[1:3, 1] <- NA #create some NA elements
iris$Sepal.Length <- as.character(iris$Sepal.Length) #for testing
iris %>%
group_by(Species) %>%
summarise_if(is.numeric, mean, na.rm = TRUE)
# Species Sepal.Width Petal.Length Petal.Width
# <fctr> <dbl> <dbl> <dbl>
#1 setosa 3.428 1.462 0.246
#2 versicolor 2.770 4.260 1.326
#3 virginica 2.974 5.552 2.026
关于OP的错误,在group_by
之后调用select
操作。由于OP的str
中未显示“Lead.Stage”列,因此不清楚它是否为非数字列。如果它是非数字的,则会在select
之后删除。因此,我们可以在select
步骤
group_by
操作
iris %>%
group_by(Species) %>%
select(which(sapply(., is.numeric))) %>%
summarise_each(funs(mean(., na.rm = TRUE)))
# Species Sepal.Width Petal.Length Petal.Width
# <fctr> <dbl> <dbl> <dbl>
#1 setosa 3.428 1.462 0.246
#2 versicolor 2.770 4.260 1.326
#3 virginica 2.974 5.552 2.026