sum = c("40 Da 12 Da de primes", "40 Da 12 Da de primes", "50 Da", "50 Da", "50 Da")
我如何將這樣的變數分成以下列:
| 價錢 | 獎金 |
|---|---|
| 40 | 12 |
| 40 | 12 |
| 50 | 0 |
| 50 | 0 |
| 50 | 0 |
uj5u.com熱心網友回復:
假設字符向量存盤在名為 的 data.frame 中df:
library(stringr)
library(dplyr)
df %>%
mutate(
Price = as.numeric(coalesce(str_extract(sum, "^\\d (?=\\sDa)"), "0")),
Bonus = as.numeric(coalesce(str_extract(sum, "\\d (?=\\sDa de primes)"), "0"))
)
這回傳
sum Price Bonus
1 40 Da 12 Da de primes 40 12
2 40 Da 12 Da de primes 40 12
3 50 Da 50 0
4 50 Da 50 0
5 50 Da 50 0
uj5u.com熱心網友回復:
我們可以使用extract從tidyr
library(dplyr)
library(tidyr)
tibble(sum) %>%
extract(sum, into = c("Price", "Bonus"),
"^(\\d )\\D (\\d )?.*", convert = TRUE) %>%
mutate(Bonus = replace_na(Bonus, 0))
# A tibble: 5 × 2
Price Bonus
<int> <dbl>
1 40 12
2 40 12
3 50 0
4 50 0
5 50 0
資料
sum = c("40 Da 12 Da de primes", "40 Da 12 Da de primes", "50 Da", "50 Da", "50 Da")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325696.html
標籤:r
上一篇:在dplyr公式右側使用動態變數
下一篇:R中簡單但不容易的合并任務
