R在字符串中按分隔符分割字符串

时间:2017-07-08 00:27:45

标签: r dplyr

我有一个包含多行的文件。例如

A               B       C    
awer.ttp.net    Code    554
abcd.ttp.net    Code    747
asdf.ttp.net    Part    554
xyz.ttp.net     Part    747

我想使用R来拆分表的A列,我希望在表D中添加一个新行,其值为awe,abcd,asdf和xyz。希望使用dplyr完成此操作。

3 个答案:

答案 0 :(得分:8)

您可以使用mutategsub

library(dplyr)
df = df %>% mutate(D=gsub("\\..*","",A))

              A    B   C    D
   awer.ttp.net Code 554 awer
   abcd.ttp.net Code 747 abcd
   asdf.ttp.net Part 554 asdf
    xyz.ttp.net Part 747  xyz

答案 1 :(得分:5)

我们可以将tidyverse用于此

library(dplyr)
library(tidyr)
df1 %>% 
   separate(A, into = 'D', extra = 'drop', remove = FALSE) %>% 
   select(LETTERS[1:4])
#             A    B   C    D
#1 awer.ttp.net Code 554 awer
#2 abcd.ttp.net Code 747 abcd
#3 asdf.ttp.net Part 554 asdf
#4  xyz.ttp.net Part 747  xyz

答案 2 :(得分:0)

首先,我创建数据框:

library(dplyr)

data <- 
   data.frame(
        A=c("awer.ttp.net","abcd.ttp.net", "asdf.ttp.net", "xyz.ttp.net"),
        B=c("Code", "Code", "Part", "Part"),
        C=c(554,747,554,747), 
        stringsAsFactors = F
   )

然后以这种方式更改新列:

data %>% 
    mutate(
        D = strsplit(A, "[.]") %>% 
            as.data.frame() %>% 
            t %>% 
            data.frame(stringsAsFactors = F) %>% 
            pull(1)
   )