我有
x<-"1, A | 2, B | 10, C "
Run Code Online (Sandbox Code Playgroud)
x始终采用这种方式格式化,|表示新行,第一个值是variable1,第二个值是variable2。
我想将其转换为 data.frame
variable1 variable2
1 1 A
2 2 B
3 10 C
Run Code Online (Sandbox Code Playgroud)
我还没有找到任何可以理解转义字符的包|
我怎样才能将它转换为data.frame?
在替换with后,我们可以使用read.tablefrombase R将字符串读入两列|\\n
read.table(text = gsub("|", "\\n", x, fixed = TRUE), sep=",", \n header = FALSE, col.names = c("variable1", "variable2"), strip.white = TRUE )\nRun Code Online (Sandbox Code Playgroud)\n-输出
\n variable1 variable2\n1 1 A \n2 2 B \n3 10 C \nRun Code Online (Sandbox Code Playgroud)\n或者使用fread来自data.table
library(data.table)\nfread(gsub("|", "\\n", x, fixed = TRUE), col.names = c("variable1", "variable2"))\n variable1 variable2\n1: 1 A\n2: 2 B\n3: 10 C\nRun Code Online (Sandbox Code Playgroud)\n或使用tidyverse-separate_rows拆分列,然后使用以下命令创建两列separate
library(tidyr)\nlibrary(dplyr)\ntibble(x = trimws(x)) %>% \n separate_rows(x, sep = "\\\\s*\\\\|\\\\s*") %>%\n separate(x, into = c("variable1", "variable2"), sep=",\\\\s+", convert = TRUE)\n# A tibble: 3 \xc3\x97 2\n variable1 variable2\n <int> <chr> \n1 1 A \n2 2 B \n3 10 C \nRun Code Online (Sandbox Code Playgroud)\n