在 R 中做 pivot table 的另一种方法
Another way to do pivot table in R
我有如下数据集:
> 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)
输出相同。我的问题:有没有办法用不同的方式执行相同的输出?
这是我的课程,但我的提交被拒绝了。我不知道为什么,但我问过这个。
请指教
一个选项是先 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))
另一种选择是转置输出 wc_3,如下所示:
result <- as.data.frame(t(w_c))
设置您的 "mean" 变量的名称:
names(result)[1] <- "mean"
wc_3 中的列名已成为 'result' 中的行名,因此我们需要将它们作为列 "var":
的值
result$var <- rownames(result)
将我们的 'result' table 中的行名设置为 NULL:
rownames(result) <- NULL
交换列的顺序:
result <- result[,c(2,1)]
我有如下数据集:
> 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)
输出相同。我的问题:有没有办法用不同的方式执行相同的输出?
这是我的课程,但我的提交被拒绝了。我不知道为什么,但我问过这个。
请指教
一个选项是先 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))
另一种选择是转置输出 wc_3,如下所示:
result <- as.data.frame(t(w_c))
设置您的 "mean" 变量的名称:
names(result)[1] <- "mean"
wc_3 中的列名已成为 'result' 中的行名,因此我们需要将它们作为列 "var":
的值result$var <- rownames(result)
将我们的 'result' table 中的行名设置为 NULL:
rownames(result) <- NULL
交换列的顺序:
result <- result[,c(2,1)]