簡體   English   中英

如何從字符向量的數據幀列的所有值中刪除$?

[英]How to remove $ from all values in a data frame column in a character vector?

我在R中有一個數據框,其中包含有關NBA球員的信息,包括薪水信息。 薪水列中的所有數據在該值之前都有一個“ $”,我想將字符數據轉換為數字以便進行分析。 因此,我需要在此列中刪除“ $”。 但是,我無法對本列中的任何值進行子集或解析。 似乎每個值都是1的向量。我已經在數據結構下面以及嘗試刪除“ $”時嘗試的內容包括在內。

> str(combined)

'data.frame':   588 obs. of  9 variables:
$ Player: chr  "Aaron Brooks" "Aaron Gordon" "Aaron Gray" "Aaron Harrison" ...
$ Tm    : Factor w/ 30 levels "ATL","BOS","BRK",..: 4 22 9 5 9 18 1 5 25 30 ...
$ Pos   : Factor w/ 5 levels "C","PF","PG",..: 3 2 NA 5 NA 2 1 1 4 5 ...
$ Age   : num  31 20 NA 21 NA 24 29 31 25 33 ...
$ G     : num  69 78 NA 21 NA 52 82 47 82 13 ...
$ MP    : num  1108 1863 NA 93 NA ...
$ PER   : num  11.8 17 NA 4.3 NA 5.6 19.4 18.2 12.7 9.2 ...
$ WS    : num  0.9 5.4 NA 0 NA -0.5 9.4 2.8 4 0.3 ...
$ Salary: chr  "$2000000" "$4171680" "$452059" "$525093" ...

combined[, "Salary"] <- gsub("$", "", combined[, "Salary"])

上面的最后一行代碼可以成功運行,但不會增加“薪水”列。

我可以通過運行下面列出的代碼來成功地對其進行擴充,但是我需要找到一種方法來自動執行整個數據集的替換過程,而不是逐行進行。

combined[, "Salary"] <- gsub("$2000000", "2000000", combined[, "Salary"])

如何在此列中子集字符向量以刪除“ $”? 對於任何格式的偽造提前道歉,這是我第一次問一個問題。 干杯,

$是一個元字符,表示字符串的結尾。 因此,我們需要轉義( \\\\$ )或將其放在方括號( "[$]" )中,或在sub使用fixed = TRUE 我們不需要gsub因為每個字符串中似乎只有一個$字符。

 combined[, "Salary"] <- as.numeric(sub("$", "", combined[, "Salary"], fixed=TRUE))

或如評論中提到的@gung,使用substr會更快

as.numeric(substr(d$Salary, 2, nchar(d$Salary)))

暫無
暫無

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

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