我有
x<-"1, A | 2, B | 10, C "
x總是以這種方式格式化,|表示一個新行,第一個值是variable1,第二個值是variable2。
我想將其轉換為 data.frame
variable1 variable2
1 1 A
2 2 B
3 10 C
我還沒有找到任何可以理解轉義字符的包 |
我怎樣才能將它轉換為data.frame?
uj5u.com熱心網友回復:
替換with后,我們可以使用read.tablefrombase R將字串讀入兩列|\n
read.table(text = gsub("|", "\n", x, fixed = TRUE), sep=",",
header = FALSE, col.names = c("variable1", "variable2"), strip.white = TRUE )
-輸出
variable1 variable2
1 1 A
2 2 B
3 10 C
或使用fread從data.table
library(data.table)
fread(gsub("|", "\n", x, fixed = TRUE), col.names = c("variable1", "variable2"))
variable1 variable2
1: 1 A
2: 2 B
3: 10 C
或使用tidyverse-separate_rows拆分列,然后使用separate
library(tidyr)
library(dplyr)
tibble(x = trimws(x)) %>%
separate_rows(x, sep = "\\s*\\|\\s*") %>%
separate(x, into = c("variable1", "variable2"), sep=",\\s ", convert = TRUE)
# A tibble: 3 × 2
variable1 variable2
<int> <chr>
1 1 A
2 2 B
3 10 C
uj5u.com熱心網友回復:
這是使用scan().
x <- "1, A | 2, B | 10, C "
do.call(rbind.data.frame,
strsplit(scan(text=x, what="A", sep='|', quiet=T, strip.white=T), ', ')) |>
setNames(c('variable1', 'variable2'))
# variable1 variable2
# 1 1 A
# 2 2 B
# 3 10 C
注: R version 4.1.2 (2021-11-01)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393433.html
標籤:r
