【问题标题】:Replace (substring) specific characters in a df Column R替换df列R中的(子字符串)特定字符
【发布时间】:2020-12-03 16:28:39
【问题描述】:

您好,我正在寻找一种方法来对 df 的列进行子串化。

Plot 
1. Ctr-M1 
2. Ctr-M2
3. CTR-W3
4. CTR-P-M20
5. M-1
6. W-15 

substring_plot 应该只包含 W 或 M 我试过这样的东西

 df$substring_plot = substr(df$plot,1,5,7)

哪个不起作用,我也明白为什么它不起作用。我一开始以为我可以这样做几次,直到我只剩下 W 和 M,但那很粗糙。

有人知道如何完成这项工作吗?

【问题讨论】:

  • 下次发帖时,请同时包含您想要的确切输出,以免混淆。

标签: r substring


【解决方案1】:

使用sub

df$plot_out <- sub("^.*([MW]).*$", "\\1", df$plot)
df

       plot plot_out
1    Ctr-M1        M
2    Ctr-M2        M
3    CTR-W3        W
4 CTR-P-M20        M
5       M-1        M
6      W-15        W

数据:

df <- data.frame(plot=c("Ctr-M1", "Ctr-M2", "CTR-W3", "CTR-P-M20", "M-1", "W-15"),
                 stringsAsFactors=FALSE)

【讨论】:

  • 这几乎成功了一半。例如,我只需要 M 或 W 而不是 W-15 或 M1。而且无论出于何种原因,plot_out 仍然显示 CTR-P-M20
  • 如果你真的只想要字母,那么使用:sub("^.*([MW]).*$", "\\1", df$plot)
  • 谢谢。我会调查 sub() 以弄清楚你在那里做了什么。
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
相关资源
最近更新 更多