我正在尝试对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列中。我打算将所有小时分成单独的列,顺序,然后重新组合,但我不能让它们正确分开。
答案 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