在dplyr中按字母顺序对数据进行排序,而不转换为因子

时间:2015-05-08 07:38:13

标签: r sorting dataframe dplyr

我正在使用dplyr包处理数据,需要按字母顺序按其中一列排序data.frame。问题是此列为characterdplyr以错误的方式排列data.frame。 这是一个例子。

require("dplyr")
set.seed(7)
df1 <- data.frame(name = sample(c("A", "a", "b", "B"), 20, T), 
                  value = rnorm(20), stringsAsFactors = F)
str(df1)
# 'data.frame':  20 obs. of  2 variables:
#      $ name : chr  "B" "a" "A" "A" ...
#      $ value: num  0.357 2.717 2.281 0.324 1.896 ...
df1 %>% group_by(name) %>% summarise(val = sum(value))
# Source: local data frame [4 x 2]
# 
#   name       val
# 1    A 5.4297509
# 2    B 0.8402506
# 3    a 3.8079681
# 4    b 0.7522799

name栏中首先是首都,然后是小写字母。 arrange不会改变任何事情。如果我们将name变量设为factor,那么它将按正确的顺序排列。就是这样

set.seed(7)
df2 <- data.frame(name = sample(c("A", "a", "b", "B"), 20, T), 
                  value = rnorm(20), stringsAsFactors = T)
df2 %>% group_by(name) %>% summarise(val = sum(value))
# Source: local data frame [4 x 2]
# 
#   name       val
# 1    a 3.8079681
# 2    A 5.4297509
# 3    b 0.7522799
# 4    B 0.8402506    

在我的数据处理中,我想保留name character类型,打破%>% - 使用其他代码管道dplyr代码也不太好那么,是否可以dplyr将第一个df1排序为df2

0 个答案:

没有答案