gpt4 book ai didi

r - 我可以在数据框的每个元素上使用 gsub() 吗?

转载 作者:行者123 更新时间:2023-12-04 01:54:39 25 4
gpt4 key购买 nike

从维基百科导入表格后,我有以下形式的值列表:

    > tbl[2:6]
$`Internet
Explorer`
[1] "30.71%" "30.78%" "31.23%" "32.08%" "32.70%" "32.85%" "32.04%" "32.31%" "32.12%" "34.07%" "34.81%"
[12] "35.75%" "37.45%" "38.65%" "40.63%" "40.18%" "41.66%" "41.89%" "42.45%" "43.58%" "43.87%" "44.52%"

$Chrome
[1] "36.52%" "36.42%" "35.72%" "34.77%" "34.21%" "33.59%" "33.81%" "32.76%" "32.43%" "31.23%" "30.87%"
[12] "29.84%" "28.40%" "27.27%" "25.69%" "25.00%" "23.61%" "23.16%" "22.14%" "20.65%" "19.36%" "18.29%"

我试图摆脱百分号,以便将数据转换为数字形式。

有没有比矢量化更快的方法来清理这些数据? 我目前的代码如下:
    data <- lapply(tbl[2:6], FUN = function(x) as.numeric(gsub("%", "", x)))

数据最终变成了数据框,但是我无法得到 gsub在数据框的所有元素上正常工作。 有没有办法 gsub() 数据框的每个元素?

The code for the project is online, with results.提前致谢!

最佳答案

好吧,我认为您可以按以下方式进行操作,但我不知道它是否比您的更好或更干净:

df <- data.frame(tbl)
df[,-1] <- as.numeric(gsub("%", "", as.matrix(df[,-1])))

这使 :
R> head(df)
Date Internet.Explorer Chrome Firefox Safari Opera Mobile
1 January 2013 30.71 36.52 21.42 8.29 1.19 14.13
2 December 2012 30.78 36.42 21.89 7.92 1.26 14.55
3 November 2012 31.23 35.72 22.37 7.83 1.39 13.08
4 October 2012 32.08 34.77 22.32 7.81 1.63 12.30
5 September 2012 32.70 34.21 22.40 7.70 1.61 12.03
6 August 2012 32.85 33.59 22.85 7.39 1.63 11.78
R> sapply(df, class)
Date Internet.Explorer Chrome Firefox
"factor" "numeric" "numeric" "numeric"
Safari Opera Mobile
"numeric" "numeric" "numeric"

关于r - 我可以在数据框的每个元素上使用 gsub() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com