gpt4 book ai didi

r - 在数据帧上使用 gsub()

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

我有一个名为 test_20171122 的 CSV 数据文件

image of dataset

通常,我使用的数据集最初是 Excel 中的会计或货币格式,后来转换为 CSV 文件。

我正在研究使用 gsub() 在 R 中将数据从会计格式“$##,###”清理到数字“####”的最佳方法。

我的问题在于 gsub() 跨数据集的所有列的迭代。我的第一直觉是在整个数据帧(如下)上运行 gsub() 但它似乎以适得其反的方式改变了数据。

gsub("\\$", "", test_20171122)

下面的代码是一个似乎完成工作的 for 循环。
for (i in 1:length(test_20171122)){
clean1 <- gsub("\\$","",test_20171122[[1]])
clean2 <- gsub("\\,","",clean1)
test_20171122[,i] <- clean2
i = i + 1
}

我试图找出使用 gsub() 清理数据帧的最佳方法。我觉得 sapply() 会起作用,但是当我运行以下代码时,它似乎破坏了数据帧的结构:
test_20171122 <- sapply(test_20171122,function(x) gsub("\\$","",x))
test_20171122 <- sapply(test_20171122,function(x) gsub("\\,","",x))

最佳答案

您可以在 gsub 中使用以下模式: "[$,]"
例子:

df <- data.frame(
V1 = c("$1,234.56", " $ 23,456.70"),
V2 = c("$89,101,124", "15,234")
)
df
# V1 V2
# 1 $1,234.56 $89,101,124
# 2 $ 23,456.70 15,234

df[] <- lapply(df, function(x) as.numeric(gsub("[$,]", "", x)))
df
# V1 V2
# 1 1234.56 89101124
# 2 23456.70 15234

关于r - 在数据帧上使用 gsub(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47445040/

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