Как удалить первые три символа из каждой строки в столбце в R - PullRequest
0 голосов
/ 23 февраля 2019

У меня большой набор данных с колонкой текста, 20K строк.Хотелось бы удалить первое число х (например, 3) символов в начале каждой строки в этом конкретном столбце.Ценю вашу помощь.

Ответы [ 3 ]

0 голосов
/ 23 февраля 2019

С помощью tidyverse мы можем использовать str_sub (и некоторые образцы fruit текстовых строк), чтобы сделать это, непосредственно указав начальную и конечную точки:

library(tidyverse)
tbl <- tibble(some_fruit = fruit)
tbl
#> # A tibble: 80 x 1
#>    some_fruit  
#>    <chr>       
#>  1 apple       
#>  2 apricot     
#>  3 avocado     
#>  4 banana      
#>  5 bell pepper 
#>  6 bilberry    
#>  7 blackberry  
#>  8 blackcurrant
#>  9 blood orange
#> 10 blueberry   
#> # … with 70 more rows
tbl %>%
  mutate(chopped_fruit = str_sub(fruit, 4, -1))
#> # A tibble: 80 x 2
#>    some_fruit   chopped_fruit
#>    <chr>        <chr>        
#>  1 apple        le           
#>  2 apricot      icot         
#>  3 avocado      cado         
#>  4 banana       ana          
#>  5 bell pepper  l pepper     
#>  6 bilberry     berry        
#>  7 blackberry   ckberry      
#>  8 blackcurrant ckcurrant    
#>  9 blood orange od orange    
#> 10 blueberry    eberry       
#> # … with 70 more rows

Создано в2019-02-22 по представьте пакет (v0.2.1)

0 голосов
/ 23 февраля 2019

Как обычно ... так много способов сделать что-то в R!

Вы также можете попробовать ?substring:

lotsofdata <- data.frame(column.1=c("DataPoint1", "DataPoint2", "DataPoint3", "DataPoint4"),
    +                 column2=c("MoreData1","MoreData2","MoreData3", "MoreData4"),
    +                 stringsAsFactors=FALSE)
> head(lotsofdata)
    column.1   column2
1 DataPoint1 MoreData1
2 DataPoint2 MoreData2
3 DataPoint3 MoreData3
4 DataPoint4 MoreData4
> substring(lotsofdata[,2],4,nchar(lotsofdata[,2]))
[1] "eData1" "eData2" "eData3" "eData4"

Или столбец 1 [,1]

> substring(lotsofdata[,1],4,nchar(lotsofdata[,1]))
[1] "aPoint1" "aPoint2" "aPoint3" "aPoint4"

Тогда просто замените его:

x<-substring(lotsofdata[,1],4,nchar(lotsofdata[,1]))

lotsofdata$column.1<-x

> head(lotsofdata)
  column.1   column2
1  aPoint1 MoreData1
2  aPoint2 MoreData2
3  aPoint3 MoreData3
4  aPoint4 MoreData4
0 голосов
/ 23 февраля 2019

Вы можете сделать это с помощью функции gsub и простого регулярного выражения.Вот код:

# Fake data frame
df <- data.frame(text_col = c("abcd", "abcde", "abcdef"))
df$text_col <- as.character(df$text_col)

# Replace first 3 chracters with empty string ""
df$text_col <- gsub("^.{0,3}", "", df$text_col)
...