簡體   English   中英

從數據框中提取數字

[英]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_alllibrary(stringr) 使用后面的正則表達式( (?<=\\\\[) ),我們匹配以[ unlist的數字\\\\d+ ,將它們提取到listunlist list以將其轉換為vector ,然后將character更改為numericas.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM