簡體   English   中英

從R中的數據框中刪除空格

[英]Removing white space from data frame in R

我已經抓取了一些數據並將其存儲在數據框中。 有些行在方括號內包含不需要的信息。 示例“ [N]團隊名稱”。 我只想保留包含團隊名稱的部分,所以首先我使用下面的代碼刪除方括號和其中包含的任何文本

gsub( " *\\(.*?\\) *", "", x)

這給我留下了“團隊名稱”(注意T之前的空格)。 現在,我嘗試使用微調或此處顯示的方法刪除T之前的空白,但是它不起作用

有人可以幫我刪除多余的空白嗎?

注意:如果我手動編寫包含空格的字符串並在其上應用修剪,它將起作用。 但是,當直接從數據幀中獲取字符串時,它不會。 同樣,當運行下面的代碼片段時(其中df [1,1]是從數據幀檢索到的相同字符串),我得到FALSE。 這使我有理由相信數據框中的字符串與手動鍵入的字符串不同。

" team name" == df[1,1]

你可以試試

gsub( "\\[[^]]*\\]\\W*", "", "[N] Team Name")

您應該能夠使用單個正則表達式替換刪除方括號以及以下任何空格。 您的正則表達式是正確的,應該成功完成此操作。 (注意:我忽略了問題中使用括號方括號之間的無法解釋的差異。我以方括號作為答案。)

奇怪的是,這似乎是默認正則表達式引擎失敗的情況,但是添加perl=T可以使其正常工作:

x <- '[N] Team Name';
gsub(' *\\[.*?\\] *','',x);
## [1] " Team Name"
gsub(perl=T,' *\\[.*?\\] *','',x);
## [1] "Team Name"

過去,我遇到過默認正則表達式引擎崩潰的情況,但是我從未遇到過perl=T ,因此我建議您使用它。 我真的認為默認正則表達式實現中存在一些問題。

我們可以用

sub(".*\\]\\s+", "", x)
#[1] "Team Name"

要不就

sub("\\S+\\s+", "", x)
#[1] "Team Name"

數據

x <- '[N] Team Name';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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