我想根據行計算函數,而不是與mutate()
一樣計算列。例如,具有dplyr:行的功能
library(dplyr)
set.seed(1)
dfx <- data.frame(
date = rep(seq(1,5),3),
type = c(rep('A', 5), rep('B1', 5), rep('B2', 5)),
value = runif(n = 15, min = 0, max = 20)
)
這導致數據幀
# date type value
# 1 1 A 5.310173
# 2 2 A 7.442478
# 3 3 A 11.457067
# 4 4 A 18.164156
# 5 5 A 4.033639
# 6 1 B1 17.967794
# 7 2 B1 18.893505
# 8 3 B1 13.215956
# 9 4 B1 12.582281
# 10 5 B1 1.235725
# 11 1 B2 4.119491
# 12 2 B2 3.531135
# 13 3 B2 13.740457
# 14 4 B2 7.682074
# 15 5 B2 15.396828
欲計算每個date
差異A-B1
和相應value
S的A-B2
。雖然
library(reshape2)
dfx %>%
dcast(date~type) %>%
group_by(date) %>%
summarise(a1=A-B1, a2=A-B2)
作品,重塑似乎有點難看。據我瞭解整理數據的概念,數據結構不應該適應工具一旦整齊的形式,但工具應該只適用於整潔的數據格式。但也許這只是我以及整形是好的...
整形步驟對我來說似乎是完全合乎邏輯的...... – A5C1D2H2I1M1N2O1R2T1
引用Wickham之書的章節和詩句:「一般的經驗法則是描述變量之間的函數關係比描述行,而且更容易在各組之間進行比較[...],而不是在各組之間進行比較。「 vita.had.co.nz/papers/tidy-data.pdf – AndrewMacDonald