[英]remove a character from the entire data frame
我有一個包含各種列的 dataframe,某些列中的某些數據包含雙引號,我想刪除這些,例如:
ID name value1 value2
"1 x a,"b,"c x"
"2 y d,"r" z"
我希望它看起來像這樣:
ID name value1 value2
1 x a,b,c x
2 y d,r z
我會使用lapply
循環遍歷列,然后使用gsub
替換"
。
df1[] <- lapply(df1, gsub, pattern='"', replacement='')
df1
# ID name value1 value2
#1 1 x a,b,c x
#2 2 y d,r z
如果需要的class
可以被改變type.convert
df1[] <- lapply(df1, type.convert)
df1 <- structure(list(ID = c("\"1", "\"2"), name = c("x", "y"),
value1 = c("a,\"b,\"c",
"d,\"r\""), value2 = c("x\"", "z\"")), .Names = c("ID", "name",
"value1", "value2"), class = "data.frame", row.names = c(NA, -2L))
一種選擇是使用apply()
和gsub()
函數來刪除所有雙引號:
df <- data.frame(ID=c("\"1", "\"2"),
name=c("x", "y"),
value1=c("a,\"b,\"c", "d,\"r\""),
value2=c("x\"", "z\""))
df <- data.frame(apply(df, 2, function(x) {
x <- gsub("\"", "", x)
})
> df
ID name value1 value2
1 1 x a,b,c x
2 2 y d,r z
要刪除$
你必須轉義它\\\\\\$
。 嘗試:
df[] <- lapply(df, gsub, pattern="\\\$", replacement="")
dplyr 解決方案(基於@akrun 在其中一條評論中的建議)。
df1 <- structure(list(ID = c("\"1", "\"2"), name = c("x", "y"),
value1 = c("a,\"b,\"c", "d,\"r\""),
value2 = c("x\"", "z\"")),
.Names = c("ID", "name", "value1", "value2"), class = "data.frame", row.names = c(NA, -2L))
df1 <- df1 %>% dplyr::mutate(across(everything(), stringr::str_remove_all, pattern = '"'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.