在dplyr中按字母顺序对data.frame进行排序,不转换为factor

在dplyr中按字母顺序对data.frame进行排序,不转换为factor,r,sorting,dataframe,dplyr,R,Sorting,Dataframe,Dplyr,我正在使用dplyr包处理数据,需要按字母顺序对data.frame列进行排序。问题是此列是字符,而dplyr以错误的方式排列了我的数据.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) #

我正在使用
dplyr
包处理数据,需要按字母顺序对
data.frame
列进行排序。问题是此列是
字符
,而
dplyr
以错误的方式排列了我的
数据.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

在我的数据处理中,我想保留
字符类型的
名称
,用另一个代码打破
%%>%%
-dplyr
代码的管道也不好,所以,是否可以使用
dplyr
将第一个
df1
排序为
df2

我猜第一个输出的顺序是正确的?我希望输出与
df2
一样,但我的数据是
df1
我不确定通过指定级别来创建因子变量的问题<代码>df1%>%分组依据(名称=因子(名称,级别=c('a','a','b','b'))%>%汇总(val=总和(值))然后您可以将其更改为字符。否则,您可能需要另一个标识符,或者您也可以尝试
match
。例如,
Un1%group\u by(name)%%>%summary(val=sum(value))%%>%arrange(匹配(name,c(rbind(tolower(Un1),Un1)))
arrange(df1,tolower(name),name)
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