我有以下資料框:
df <- data.frame(a=c("23034185- Breast Cancer","24586730- Glioblastoma"), b=c(25, 47))
我想搜索 a 列以查看該框是否包含數字,如果是,則僅回傳數字而不是整個欄位。所以輸出應該是“23034185”、“24586730”而不是包含整個欄位。
請幫忙,謝謝。
uj5u.com熱心網友回復:
一個可能的解決方案:
library(tidyverse)
df <- data.frame(a=c("23034185- Breast Cancer","24586730- Glioblastoma"), b=c(25, 47))
df %>%
mutate(number = str_extract(a, "^\\d "))
#> a b number
#> 1 23034185- Breast Cancer 25 23034185
#> 2 24586730- Glioblastoma 47 24586730
uj5u.com熱心網友回復:
我們可以gsub從基礎 R 開始使用。該模式的[^0-9]意思是“在df$a其中查找不是數字的字符并將它們替換為空”。
df$c <- gsub('[^0-9]', '', df$a)
> df
a b c
1 23034185- Breast Cancer 25 23034185
2 24586730- Glioblastoma 47 24586730
該列df$c實際上不包含數字,而是字串。
> str(df$c)
chr [1:2] "23034185" "24586730"
如果您希望使用這些數字執行任何計算,您可以使用 直接將它們轉換為數字as.numeric()。
df$c <- as.numeric(gsub('[^0-9]', '', df$a))
> str(df$c)
num [1:2] 23034185 24586730
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/420676.html
標籤:
