在R中对列的内部进行排序

时间:2017-11-08 20:41:59

标签: r

我正在尝试对R中列的内部进行排序。例如,我有这个:

ID     HoursAvailable
1      a,b,c,k,d
2      e,g,h
3      a,b,c,h,d

我正试图在内部对数字进行排序,如此

ID     HoursAvailable
1      a,b,c,d,k
2      e,g,h,,
3      a,b,c,d,h

我试图使用这样的单独函数:

cdMCd<- cdMf %>% separate(HoursAvailable, c("a","b","c","d","e","f","g","h","i","j"))                                          

但我无法正确排序。对于此示例,ID 2中的e将被分类到a列中,但我需要将其分类到e列中。我打算将所有小时分成单独的列,顺序,然后重新组合,但我不能让它们正确分开。

2 个答案:

答案 0 :(得分:0)

以下是我要做的事:

首先创建一个可以对单个函数进行排序的函数,然后创建一个可以将此函数应用于字符串向量的函数     库(stringr)     库(plyr)

split_and_sort <- function(x){
   x_split <- sort(unlist(str_split(x, ",")))
   return(paste(x_split, collapse = ","))
}

split_and_sort_column <- function(x){
   laply(x, split_and_sort)
}

df$HoursAvailable <- split_and_sort_column(df$HoursAvailable)

答案 1 :(得分:0)

library(dplyr)

dt = read.table(text="
ID     HoursAvailable
1      a,b,c,k,d
2      e,g,h
3      a,b,c,h,d
", header=T, stringsAsFactors=F)

SortString = function(x) {paste0(sort(unlist(strsplit(x, split=","))),collapse = ",")}

dt %>%
  rowwise() %>%
  mutate(Updated = SortString(HoursAvailable)) %>%
  ungroup()

# # A tibble: 3 x 3
#      ID HoursAvailable   Updated
#   <int>          <chr>     <chr>
# 1     1      a,b,c,k,d a,b,c,d,k
# 2     2          e,g,h     e,g,h
# 3     3      a,b,c,h,d a,b,c,d,h