从 R 中的数据框中的列中删除一些文本字符串和字符

Removing some text string and characters from a column in dataframe in R

我知道过去有人以不同的方式问过这个问题。但是,我迷失了 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 做到这一点?

我们可以匹配 .\. - 转义,因为它是一个匹配任何字符的元字符)和一个或多个数字 (\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"