Разделить текст ячеек на различные ячейки, разделенные запятой, используя R - PullRequest
0 голосов
/ 08 октября 2018

У меня есть фрейм данных как

Office 365,MS SQL Server,ASP.NET

Microsoft Azure,ITIL,Project Management

Infrastructure services,AWS solution architect

Нужно разделить эти ячейки запятой, как показано ниже

Office 365                 MS SQL Server                ASP.NET

Microsoft Azure            ITIL                      Project Management

Infrastructure services    AWS solution architect     NA

Ответы [ 3 ]

0 голосов
/ 08 октября 2018

Вот не слишком элегантное решение, которое выполнит свою работу.Я уверен, что другие в SO предоставят вам более краткие методы.

  • По сути, вы можете использовать некоторое регулярное выражение внутри gsub () для извлечения значений перед первой запятой.
  • Как только вы это сделаете, удалите все, что находится перед первой запятой, и повторите процесс, чтобы извлечь значение перед второй запятой.
  • Повторите столько раз, сколько необходимо.

    #Load packages
    library(dplyr)
    library(stringr)
    
    #Replicating your dataset
    df<-data.frame(Strings=
               c("Office 365,MS SQL Server,ASP.NET",
                 "Microsoft Azure,ITIL,Project Management",
                 "Infrastructure services,AWS solution architect"))
    
    #Extract sting before the first comma
        df<-mutate(df, FirstComma = gsub(",.*$", "", Strings))
    
    #Extract string between first & second commas
    
        #Create a vector identifying end position of First String
        df$EndPosOf1stStr<-str_locate(df$Strings,df$FirstComma)[,2] 
    
        #Extract string between first & second comma
        df<-mutate(df, STRWithoutFirst = substring(Strings,EndPosOf1stStr+2), 
                   SecondComma = gsub(",.*$", "", STRWithoutFirst))
    
    #Extract value after second comma
    
        #Create a vector identifying end position of Second String
        df$EndPosOf2ndStr<-str_locate(df$Strings,df$SecondComma)[,2]
    
        #Extract string after second comma
        df<-mutate(df,STRWithoutFirstSecond = substring(Strings,EndPosOf2ndStr+2),
          ThirdComma = gsub(",.*$", "", STRWithoutFirstSecond))
    
    #Keep variables of interest
    df<-select(df, Strings, FirstComma, SecondComma, ThirdComma)
    
    print(df)
    
0 голосов
/ 22 октября 2018
install.packages("splitstackshape")
library(splitstackshape)

New_Data = concat.split( Old_Data  , split.col=1, sep = "," , structure = "compact", mode = NULL, type = NULL, drop = FALSE, fixed = FALSE, fill = NA) 

Это прекрасно сработало для меня.

0 голосов
/ 08 октября 2018

Что-то вроде этого с dplyr:

library(dplyr) 
df %>% separate(text,c("a","b","c"),sep =",",remove =FALSE) %>% select(-1)

                        a                      b                  c
1              Office 365          MS SQL Server            ASP.NET
2         Microsoft Azure                   ITIL Project Management
3 Infrastructure services AWS solution architect               <NA>

Поскольку у нас нет ваших данных, давайте предположим, что у вас есть data.frame, и вы хотите data.frame как результат:

df <- data.frame(text = c("Office 365,MS SQL Server,ASP.NET",
                              "Microsoft Azure,ITIL,Project Management",
                             "Infrastructure services,AWS solution architect"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...