我的數據是有序的觀測數據,我希望儘可能保持排序的同時進行操作。tidyr :: spread和dplyr中的隱式排序::總結
以this question的答案,我把「B」放在數據框的「A」之前。所產生的寬數據按列「名稱」排序,即首先是「A」,然後是「B」。
df = data.frame(name=c("B","B","A","A"),
group=c("g1","g2","g1","g2"),
V1=c(10,40,20,30),
V2=c(6,3,1,7))
gather(df, Var, Val, V1:V2) %>%
unite(VarG, Var, group) %>%
spread(VarG, Val)
name V1_g1 V1_g2 V2_g1 V2_g2
1 A 20 30 1 7
2 B 10 40 6 3
有沒有辦法保持原來的順序?像這樣:
name V1_g1 V1_g2 V2_g1 V2_g2
1 B 10 40 6 3
2 A 20 30 1 7
04/02編輯:我剛剛發現dplyr::summarise
排序以及。 arrange(name, df$name)
仍然可以恢復訂單。但是,我想知道包的設計是否需要額外的排序?
df %>%
group_by(name) %>%
summarise(n()) %>%
name n()
1 A 2
2 B 2
有趣。這似乎是在擴散步驟中,即使「名稱」變量的因子水平也得到了改變...... – A5C1D2H2I1M1N2O1R2T1 2015-04-01 04:09:05