[英]Extracting the numbers from the data frame
我有一個帶有“計算”列的數據框,可以通過以下代碼復制該數據框:
a <- data.frame(Id = c(1:3), Calculation = c('[489]/100','[4771]+[4777]+[5127]+[5357]+[5597]+[1044])/[463]','[1044]/[463]'))
> str(a)
'data.frame': 3 obs. of 2 variables:
$ Id : int 1 2 3
$ Calculation: Factor w/ 3 levels "[1044]/[463]",..: 3 2 1
請注意,“計算”列中有兩種類型的數字:大多數數字都用方括號括起來,但有些數字(在本例中為100)則不是(這在我的應用程序中具有含義)。
我想做的是提取出現在“計算”列中的所有不同數字,以返回帶有這些數字的並集的向量。 理想情況下,我希望能夠區分括號之間的數字和括號之間的數字。 這一步不是很重要(如果很復雜的話),因為括號之間的數字很少,我可以手動檢測到它們。 因此,在這種情況下,所需的輸出為:
b = c(489,4771,4777,5127,5357,5597,1044,463)
提前致謝
我們可以使用str_extract_all
從library(stringr)
使用后面的正則表達式( (?<=\\\\[)
),我們匹配以[
unlist
的數字\\\\d+
,將它們提取到list
, unlist
list
以將其轉換為vector
,然后將character
更改為numeric
( as.numeric
),並獲取unique
元素。
library(stringr)
unique(as.numeric(unlist(str_extract_all(a$Calculation, '(?<=\\[)\\d+'))))
#[1] 489 4771 4777 5127 5357 5597 1044 463
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.