【问题标题】:Removing some text string and characters from a column in dataframe in R从R中数据框中的列中删除一些文本字符串和字符
【发布时间】:2021-07-01 18:46:53
【问题描述】:

我承认过去曾以不同的方式提出过这个问题。但是,我迷路了gsub。

我有这个数据框:

df <- structure(list(Real = c(7.76, 5.55, 4.8, 4.68, 7.43, 4.59), Predicted = c(7.36, 
5.28, 5.12, 4.47, 7.48, 4.69), PdivR = c(0.95, 0.95, 1.07, 0.96, 
1.01, 1.02), Regression = c("`TLC`~`7_A`.152534", "`TLC`~`7_A`.158324", 
"`TLC`~`7_A`.611461", "`TLC`~`7_A`.627267", "`TLC`~`7_A`.674564", 
"`TLC`~`7_A`.675169")), row.names = c(NA, 6L), class = "data.frame")

可以这样显示:

head(df)
  Real Predicted PdivR         Regression
1 7.76      7.36  0.95 `TLC`~`7_A`.152534
2 5.55      5.28  0.95 `TLC`~`7_A`.158324
3 4.80      5.12  1.07 `TLC`~`7_A`.611461
4 4.68      4.47  0.96 `TLC`~`7_A`.627267
5 7.43      7.48  1.01 `TLC`~`7_A`.674564
6 4.59      4.69  1.02 `TLC`~`7_A`.675169

我想在Regression 列中删除点. 和点右侧的数字,以及这个符号(上面的逗号),以便只保留TLC ~ 7_A。

请注意,右侧的数字数量在列中是不同的,但行为是相同的。

gsub 怎么办?

【问题讨论】:

    标签: r gsub


    【解决方案1】:

    我们可以匹配 .(\\. - 转义,因为它是一个匹配任何字符的元字符) 和一个或多个数字 (\\d+) 直到字符串的末尾 ($) 并替换为空白 ("") 并用 gsub 换行以匹配反引号 ("`") 并将其删除

    df$Regression <- gsub("`", "", sub("\\.\\d+$", '', df$Regression))
    df$Regression
    [1] "TLC~7_A" "TLC~7_A" "TLC~7_A" "TLC~7_A" "TLC~7_A" "TLC~7_A"
    

    【讨论】:

    • 太棒了。那么删除“上逗号”呢? @akrun
    • @antecessor 你的意思是反引号
    • 是的,我不知道如何用英文命名,对不起...
    • @antecessor 更新了帖子。 .只需使用gsub 包装即可
    • 太棒了!一切都很完美!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2021-02-13
    • 2014-08-29
    • 2019-02-18
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多