R语言字符串或变量拆分

R语言常用的字符串或变量拆分函数有 substr  split  strsplit  tstrsplit


substr 主要是提取或是替换一个字符向量中的子字符串。


> substr("abcdef", 2, 4)                #从字符串“abcdef”中提取出第2到4个位置上的字符
[1] "bcd"
> substring("abcdef", 1:6, 1:6)    #从字符串“abcdef”中提取出第1到1、2到2—6到6位置上的字符,即把字符串单个化 
[1] "a" "b" "c" "d" "e" "f"


split 主要是用定义的f函数来将向量V进行分离。

例:

require(stats)                       #加载stats包
n <- 10; nn <- 100               

x <- rnorm(n * nn) + sqrt(as.numeric(g))       #生成随机数x

 f <- c(1:8)                                                     #分离函数f
 split(x, f)                                                       #用f将随机数x分离,即分离成8份

> split(x, f)
$`1`
  [1]  1.47442576  2.80564890  2.14614596  3.20958535  2.90331051  2.27517852  2.31779222  2.36806067  2.97523054


tstrsplit是data.table包里面的一个函数, 它跟transpose函数类似, 主要是对变量用strsplit函数作用再进行转置,形成一个独立的列。

strsplit主要是根据子字符串中与此相匹配的字符将向量进行分割,分割后的内容不包含该字符的列表。

> x <- c(as = "asfef", qu = "qwerty", "yuiop[", "b", "stuff.blah.yech")
> x
               as                qu                                                       
          "asfef"          "qwerty"          "yuiop["               "b" "stuff.blah.yech" 
> strsplit(x, "e")
$as
[1] "asf" "f"  
$qu
[1] "qw"  "rty"
[[3]]
[1] "yuiop["
[[4]]
[1] "b"
[[5]]
[1] "stuff.blah.y" "ch"          


例:

> x = c("abcde", "ghij", "klmnopq")                   #x 为三个字条串组成的向量
> strsplit(x, "", fixed=TRUE)                               #用strsplit 把每个字符串中的字符给分离出来形成列表中单独的元素,总共有三个元素
[[1]]
[1] "a" "b" "c" "d" "e"
[[2]]
[1] "g" "h" "i" "j"
[[3]]
[1] "k" "l" "m" "n" "o" "p" "q"       


> tstrsplit(x, "", fixed=TRUE)                              #用tstrsplit 把每个字符串中的字符给分离出来并进行了转置,列表中第一个元素为向量中每个元素的第一个字符,共七个元素
[[1]]
[1] "a" "g" "k"
[[2]]
[1] "b" "h" "l"
[[3]]
[1] "c" "i" "m"
[[4]]
[1] "d" "j" "n"
[[5]]
[1] "e" NA  "o"
[[6]]
[1] NA  NA  "p"
[[7]]
[1] NA  NA  "q"            


> DT = data.table(x=c("A/B", "A", "B"), y=1:3)                     #DT为三行两列的数据表
> DT
     x y
1: A/B 1
2:   A 2
3:   B 3
> DT[, c("c1", "c2") := tstrsplit(x, "/", fixed=TRUE)][]              #用tstrsplit函数将变量x分离开形成新的变量c1和c2
     x y c1 c2
1: A/B 1  A  B
2:   A 2  A NA
3:   B 3  B NA

你可能感兴趣的:(R软件学习)