我的数据集如下:
> head(worldcup)
Team Position Time Shots Passes Tackles Saves
Abdoun Algeria Midfielder 16 0 6 0 0
Abe Japan Midfielder 351 0 101 14 0
Abidal France Defender 180 0 91 6 0
Abou Diaby France Midfielder 270 1 111 5 0
Aboubakar Cameroon Forward 46 2 16 0 0
Abreu Uruguay Forward 72 0 15 0 0
然后是某些变量的代码计数平均值:
wc_3 <- worldcup %>%
select(Time, Passes, Tackles, Saves) %>%
summarize(Time = mean(Time),
Passes = mean(Passes),
Tackles = mean(Tackles),
Saves = mean(Saves))
,输出为:
> wc_3
Time Passes Tackles Saves
1 208.8639 84.52101 4.191597 0.6672269
然后我需要执行如下输出:
var mean
Time 208.8638655
Passes 84.5210084
Tackles 4.1915966
Saves 0.6672269
我试着这样做:
wc_3 <- worldcup %>%
select(Time, Passes, Tackles, Saves) %>%
summarize(Time = mean(Time),
Passes = mean(Passes),
Tackles = mean(Tackles),
Saves = mean(Saves)) %>%
gather(var, mean, Time:Saves, factor_key=TRUE)
输出相同。我的问题是:无论如何以不同的方式执行相同的输出?
这是我的课程,但我的提交被拒绝了。我不知道为什么,但我问过这件事。
请告知
答案 0 :(得分:8)
首先选择gather
,然后按'Var'和summarise
分组,以获得'Val'的mean
library(dplyr)
library(tidyr)
worldcup %>%
gather(Var, Val, Time:Saves) %>%
filter(Var!= "Shots") %>%
group_by(Var) %>%
summarise(Mean = mean(Val))
答案 1 :(得分:0)
另一种选择是转换输出wc_3,如下所示:
result <- as.data.frame(t(w_c))
设置&#34;卑鄙&#34;的名称变量:
names(result)[1] <- "mean"
来自wc_3的列的名称已成为&#39; result&#39;中的rownames,因此我们需要将这些列作为列的值&#34; var&#34;:
result$var <- rownames(result)
在我们的&#39;结果&#39;中设置rownames table as NULL:
rownames(result) <- NULL
交换列的顺序:
result <- result[,c(2,1)]