【问题标题】:How can I use gsub in multiple specific column in r [duplicate]如何在 r [重复] 的多个特定列中使用 gsub
【发布时间】:2019-07-10 03:56:30
【问题描述】:

你能帮我回答一下小Q吗?

我有如下的data.frame。比,

我想轻松使用 data.frame 中的 gsub 函数特定列

因为更改字符是相同的!但我想更改很多特定的列。

在示例代码中,它只有 4 列,但我的数据超过 10 列,我想更改 6~7 特定列(不连续)。

并更改相同的文本...

请帮忙谢谢

我就是这样的

data$col1<-gsub("sfsdf", "Hi", data$col1)
data$col3<-gsub("sfsdf", "Hi", data$col3)
data$col4<-gsub("sfsdf", "Hi", data$col4)

等等……

列太多了...

col1 <- 1:10   
col2 <- 21:30   
col3 <- c("503.90", "303.90 obs", "803.90sfsdf sf", "203.90 obs", "303.90", "103.90 obs", "303.90", "403.90 obs", "803.90sfsdf sf", "303.90 obs")   
col4 <- c("303.90", "303.90 obs", "303.90", "203.90 obs", "303.90", "107.40fghfg", "303.90", "303.90 obs", "303.90", "303.90 obs")

data <- data.frame(col1, col2, col3, col4)

data$col3 <- as.factor(data$col3)
data$col4 <- as.factor(data$col4)

Using gsub on columns in R

【问题讨论】:

  • 随便data[] &lt;- lapply(data, gsub, pattern = "sfsdf", replacement = "Hi")
  • 你的意思是,data[,c("col1", "col3", "col5")
  • 我的意思是data[,c("col1", "col3", "col5")] &lt;- lapply(data[,c("col1", "col3", "col5")], gsub, ...
  • 这是您的第二个问题,可以通过在线搜索和阅读lapply 轻松回答。虽然我们在这里为您提供帮助,但我认为您应该对可接受的问题类型、提出问题之前我应该​​做什么等进行一些研究。也许使用tour 并阅读How to ask a good question? 会是一个好的开始。您将获得徽章! ...同时,我认为这是一个骗局!

标签: r


【解决方案1】:

我们可以使用lapply 循环列并应用gsub

nm1 <- c("col1", "col3", "col5") 
data[nm1] <- lapply(data[nm1], gsub, pattern = "sfsdf", replacement = "Hi")

或者另一个选项是mutate_at

library(dplyr)
data %>%
    mutate_at(vars(nm1), ~ str_replace(., "sfsdf", "Hi"))

【讨论】:

  • 这个 lapply 解决方案能解决原帖吗?我试过了,你从一个数据框开始,最后是一个列表。
  • @MasonK 它应该可以解决发布的问题。我不知道您输入数据的结构,也不知道应用的函数。
猜你喜欢
  • 1970-01-01
  • 2018-06-05
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多