我在R作業,但我不太清楚如何從任何數字中提取一系列資料,即從數字20102168056中,我想像這樣細分它
- 2010 -> 年
- 2 -> 學期
- 168 -> 大學生涯
- 056 -> 唯一編號
我試圖用 if 來做,但是每次我遇到更多錯誤時,我都是新手,我想知道您是否可以幫助我(順便說一句,它適用于任何數字,如 20211888070,所以我做了不使用如果我提出)。
uj5u.com熱心網友回復:
您可以使用tidyr::separate.
library(tidyverse)
df <- tibble(original = c(20102168056, 20141152013, 20182008006))
df %>%
separate(original, into = c("year", "semester", "university_career", "unique_number"), sep = c(4,5,8,11))
# A tibble: 3 × 4
year semester university_career unique_number
<chr> <chr> <chr> <chr>
1 2010 2 168 056
2 2014 1 152 013
3 2018 2 008 006
您可能希望將某些列轉換為整數:
df %>%
separate(original, into = c("year", "semester", "university_career", "unique_number"), sep = c(4,5,8,11)) %>%
mutate(across(year:unique_number, as.integer))
# A tibble: 3 × 4
year semester university_career unique_number
<int> <int> <int> <int>
1 2010 2 168 56
2 2014 1 152 13
3 2018 2 8 6
uj5u.com熱心網友回復:
我們可以使用stringr::str_match().
library(tidyverse)
data <- c(20102168056, 20102168356)
str_match(data, '^(\\d{4})(\\d{1})(\\d{3})(\\d{3})') %>%
as.data.frame() %>%
set_names(c('value', 'year', 'semester', 'university_career', 'unique_number'))
#> value year semester university_career unique_number
#> 1 20102168056 2010 2 168 056
#> 2 20102168356 2010 2 168 356
由reprex 包(v2.0.1)于 2021 年 12 月 8 日創建
uj5u.com熱心網友回復:
substr()如果您首先將數字轉換為字符,則可以使用該函式as.character()。
test <- '20102168056'
data <- list()
data$year <- substr(test, 1, 4)
data$semester <- substr(test, 5, 5)
data$uni_career <- substr(test, 6, 8)
data$unique_num <- substr(test, 9, 11)
print(data)
#> $year
#> [1] "2010"
#>
#> $semester
#> [1] "2"
#>
#> $uni_career
#> [1] "168"
#>
#> $unique_num
#> [1] "056"
由reprex 包(v2.0.1)于 2021 年 12 月 8 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377756.html
標籤:r
