![](/img/trans.png)
[英]data.frame and splitting rows… not found a suitable solution for my data
[英]tidyverse: splitting string to data.frame as rows
我想將基於\n
的字符串拆分為data.frame
的行。 下面給出的代碼不能按要求工作。 任何提示。
library(tidyverse)
Test <- "ASD 7\nDEF \n This"
library(stringr)
str_split(string = Test, pattern = "\n")
[[1]]
[1] "ASD 7" "DEF " " This
tb <-
as_tibble(Test) %>%
set_names("Test")
tb %>%
str_split(string = Test, pattern = "\n")
[[1]]
[1] NA
Warning message:
In stri_split_regex(string, pattern, n = n, simplify = simplify, :
NAs introduced by coercion
需要 Output
ASD 7
DEF
This
str_split
旨在處理原子向量而不是數據集。 它沒有作為data
的參數,因此它只能像這樣工作
str_split(tb$Test, '\n')
[[1]]
[1] "ASD 7" "DEF " " This"
或者
> tb %>%
+ mutate(chr_list = str_split(Test, '\n'))
# A tibble: 1 x 2
Test chr_list
<chr> <list>
1 "ASD 7\nDEF \n This" <chr [3]>
此外,如果您喜歡在數據庫中執行此操作,您可以像這樣執行tidyr::separate
或tidyr::separate_rows()
tb %>%
separate_rows(Test, sep = '\n')
# A tibble: 3 x 1
Test
<chr>
1 "ASD 7"
2 "DEF "
3 " This"
或者
tb %>%
separate(Test, into = c('A', 'B', 'C'), sep = '\n')
# A tibble: 1 x 3
A B C
<chr> <chr> <chr>
1 ASD 7 "DEF " " This"
PS:如果你也想刪除空格,你可以使用'\\s*\n+\\s*'
作為分隔模式
tb %>%
transmute(text_data = map(str_split(Test, '\n'), ~ str_trim(.x))) %>%
unnest_longer(text_data)
# A tibble: 3 x 1
text_data
<chr>
1 ASD 7
2 DEF
3 This
或者
tb %>%
separate_rows(Test, sep = "\\s*\n+\\s*")
# A tibble: 3 x 1
Test
<chr>
1 ASD 7
2 DEF
3 This
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.