数据-R语言-图表-决策-Linux-Python

关于向量、数据框和字符串的排序

2018-11-04  本文已影响17人  小洁忘了怎么分身

1.向量或因子中的元素如何调顺序

因子可以直接调,向量则是转换为因子再调。
此处核心操作是因子中的rev操作。

(1)实现倒顺序

a <- c("a","b","c","d")
reverse <- as.character(rev(factor(a)))

(2)默认排序-按照字母顺序

(3)按照levels排序

sort(factor(a),levels=c("a","d","c","b"))

2.数据框中的行和列如何调顺序

#行
arrange(faithful,waiting)
#列
select(faithful,2,1)
#如果只想把某列提前,后面可加everthing
select(flights,3,everything())

3.字符串abcd倒序输出为dcba?

涉及到排序,两个思路,向量或因子,这里还有一个要用到的操作就是字符串的拆分和组合。

方法一:利用向量

a <- "abcd"
n <- str_length(a)
b <- substring(a,1:n,1:n)
reverse<-str_c(b[min_rank(desc(b))],collapse = "")

这是对单个字符串的操作,如果有多个字符串,该如何同时排序?

秀一下正则表达式。

字符串较短时:

f<-("abc","bca","xyz")
reverse<-str_replace(f,"([^ ]+)([^ ]+)([^ ]+)","\\3\\2\\1")

字符串较长时,用这个操作则显得非常丑。
经过一番探究我写了如下代码,用replace调整顺序

f <- c("abcdefgh","bcdefghi","cdefghij")
n=str_length(f[1])
g <- c(rep("([^ ]+)",times=n))
g2 <- str_c(g,collapse = "")
h <- str_c(n:1,collapse = "\\")
h2 <- str_c("\\",h)
str_replace(f,g2,h2)

正在我写的非常开心时,豆豆伸过个脑袋说,花花我举手,我要补充一个新方法:stri_reverse()

a <- c("a","ab","abc")
stringi::stri_reverse(a)
#[1] "a"   "ba"  "cba"

嗯,原来stringi里有个直接倒个的函数啊。我可以倔强地认为,我这个更强大,不仅可以倒序啊我可以随便调顺序!!!

方法二:利用因子

a <- "abcd"
n <- str_length(a)
d <- substring(a,1:n,1:n)
x <- factor(d)
reverse <- str_c(rev(x),collapse = "")
上一篇 下一篇

猜你喜欢

热点阅读