這是可重現的例子。
df2 <- data.frame(Num = c(1,2,3), Comment = c('nick comment12021.12.01 nickn comment2222021.12.02 nickname333 commennnnt222021.12.01', 'nick comment12021.12.01 nickn comment2222021.12.02 nickname333 commeeeent222021.12.01','nick comment12021.12.01 nickn comment2222021.12.02 nickname3333333 comment22021.12.01') )
Num Comment
----------------------------------------------------------------------------
1 Tom comment1~ Jay comment2 Yun comment 3 ~
2 Tim comment1~ Cristal comment2~ Lomio comment3~
3 Tracer comment1~ Teemo comment2~ Irelia comment3~
--------------------------------------------------------------------------
我有一個包含 2 列和多行的資料框。這些是我從抓取網站中得到的評論。但是,由于它是一個非常有活力的網站,我不得不同時獲得多個人的昵稱和評論。
我想從這個不規則的文本塊中洗掉昵稱,并創建一個只有評論的詞云。但是我想不出只洗掉昵稱的方法。昵稱和評論的長度是不規則的,所以我不能按照我知道的方式來做。
uj5u.com熱心網友回復:
如果你有一個固定的分隔符(就像" {7}"你在評論中提到的正好七個空格(使用正則運算式)),你可以執行以下操作:
dd <- data.frame(
id = 1:3,
comment = c(
"Tom comment1~ Jay comment2~ Yun comment3~",
"Tim comment1~ Cristal comment2~ Lomio comment3~",
"Tracer comment1~ Teemo comment2~ Irelia comment3~"
)
)
extract_comments <- function(comments) {
lapply(
comments,
function(x) {
sp <- strsplit(x, " {7}")[[1]]
sp <- trimws(sp)
ppl <- seq(1, length(sp), by = 2)
data.frame(
ex_person = sp[ppl],
ex_comment = sp[ppl 1]
)
}
)
}
dd$extracted <- extract_comments(dd$comment)
tidyr::unnest(dd, extracted)
#> # A tibble: 9 x 4
#> id comment ex_person ex_comment
#> <int> <chr> <chr> <chr>
#> 1 1 Tom comment1~ Jay ~ Tom comment1~
#> 2 1 Tom comment1~ Jay ~ Jay comment2~
#> 3 1 Tom comment1~ Jay ~ Yun comment 3
#> 4 2 Tim comment1~ Cristal ~ Tim comment1~
#> 5 2 Tim comment1~ Cristal ~ Cristal comment2~
#> 6 2 Tim comment1~ Cristal ~ Lomio comment3~
#> 7 3 Tracer comment1~ Teemo~ Tracer comment1~
#> 8 3 Tracer comment1~ Teemo~ Teemo comment2~
#> 9 3 Tracer comment1~ Teemo~ Irelia comment3~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371344.html
上一篇:機器學習訓練資料和未知值查詢
