使用 R 将某些特殊字符如 @ 或 - 替换为它们的实际单词 "at" 和 "dash"

Replacing certain special characters like @ or - with their actual words "at" and "dash" using R

我一直在研究 R 中的一些数据清理程序,但遇到了 运行 问题。我正在尝试用对应的字符 "at".

替换“@”等特殊字符

我试过subgsubsetNames甚至replace。 所有这些都会产生相同的结果:它只是在我的数据中给了我大量的 NA。 我有一个我的数据样例,仅供参考。

试想一下,我看不到所有@符号在哪里,我想搜索整个数据集并将它们全部替换。我的实际数据集有 50 列,因此按列排序是行不通的。

################## 编辑 ########### #######

aa <- read.csv("C:/Users/Zander Kent/Documents/Data Cleaning/sample dataset.csv", header = T, na.strings=c("", " ","NA"))
aaa <- data.frame(aa)

abc <- as.data.frame(apply(aaa, 2, function(x) gsub(" @ ", "at", x)))
write.csv(abc, file="C:/Users/Zander Kent/Documents/Data Cleaning/clean_2.csv")

link 到 google.drive 中的数据 Sample Data

我尝试了其中一个答案,它适用于非常小的 10x10 数据集,但是当我在我的整个数据集上尝试它时,它什么也没做。所有特殊字符都还在那里。代码 运行 没有任何错误消息,没有任何问题。

缺乏可重现的例子...

让我们用不需要的符号创建一个向量:

a <- data.frame(x = c("1", "a", "3@"), y = c("5@", "2", "b"))

现在我们可以使用gsub:

as.data.frame(apply(a, 2, function(x) gsub("@", "at", x)))

并获得:

##    x   y
## 1   1 5at
## 2   a   2
## 3 3at   b

####### 编辑#####

如果你想用"dash"替换“-”,那么qdap包中有一个很好的函数。让我们用两个坏人重新创建向量:

a <- data.frame(x = c("1-", "a", "3@"), y = c("5@", "2", "b-"))

然后我们做:

require(qdap)
as.data.frame(apply(a, 2, function(x) multigsub(c("@", "-"), 
                                                c("at", "dash"), 
                                                x))

####### 编辑 2 #######

这有效,而且相当大:

x <- sample(LETTERS, 1e6, TRUE)
y <- sample(c("", "", "", "@", "-"), 1e6, TRUE)
a <- data.frame(x, y)
b <- apply(a, 1, function(x) paste(x, collapse = ""))

df <- as.data.frame(matrix(b, ncol=50))
df[1:4, 1:10]
  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1  T V-  H  L  T K@  M T@ M-   I
2  G  W F@ K@ W@ T@  R X-  G  G-
3  R E@  V O@  R  D  L  L C-   B
4  T G@  J  U  X H@  Q  Q  T  Z@

df2 <- apply(df, 2, function(x) multigsub(c("@", "-"), c("at", "dash"), x))

grep("-", df2)
integer(0)

grep("@", df2)
integer(0)

df2[1:4, 1:10]
     V1  V2      V3    V4    V5    V6    V7  V8      V9      V10    
[1,] "T" "Vdash" "H"   "L"   "T"   "Kat" "M" "Tat"   "Mdash" "I"    
[2,] "G" "W"     "Fat" "Kat" "Wat" "Tat" "R" "Xdash" "G"     "Gdash"
[3,] "R" "Eat"   "V"   "Oat" "R"   "D"   "L" "L"     "Cdash" "B"    
[4,] "T" "Gat"   "J"   "U"   "X"   "Hat" "Q" "Q"     "T"     "Zat"