【发布时间】:2015-06-05 12:37:40
【问题描述】:
我的数据是有序的观察数据,我希望在进行操作时尽可能保持有序。
回答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
【问题讨论】:
-
有趣。似乎在传播步骤中,甚至“名称”变量的因子水平也发生了变化......
标签: r dplyr data-manipulation tidyr