r - 从R中的数据框的列中删除文本字符串中的重复数字
问题描述
我有这个例子:
df <- structure(list(PdivR = c(0.93, 0.92, 0.97, 1.07, 1.08, 1.02,
0.95, 0.92, 1.19, 0.99, 0.92, 1.02, 1.02, 0.88, 1.13, 0.97, 0.86,
1.06, 0.98, 0.97, 1, 1.01, 0.96, 1.01, 1.02, 1.04, 0.98, 1.06,
1.05, 0.97, 1.13, 0.97, 0.87, 1.06, 0.94, 1.03, 1.11, 1.11, 0.97,
0.94, 1.05, 1, 0.94, 1.02, 1.04, 0.87, 1.17, 0.98, 0.95, 1.04,
0.96, 0.99, 1.07, 1.04, 0.95, 1.01, 0.9, 1.09, 0.91, 1.02, 1.08,
1.04, 1.1, 0.99, 0.84, 1.04, 1.05), Regression = c("TLC~8+8+10+10",
"TLC~8+8+10+10", "TLC~8+8+10+10", "TLC~8+8+10+10", "TLC~8+8+10+10",
"TLC~8+8+10+10", "TLC~8+8+10+10", "TLC~8+8+10+10", "TLC~8+8+10+10",
"TLC~8+8+10+10", "TLC~8+8+10+10", "TLC~8+8+10+10", "TLC~8+8+10+10",
"TLC~8+8+10+10", "TLC~8+8+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10",
"TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10",
"TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10",
"TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10",
"TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10",
"TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10",
"TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10",
"TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~9+9+10+10",
"TLC~9+9+10+10", "TLC~9+9+10+10", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9",
"TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9",
"TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9",
"TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9",
"TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9",
"TLC~7+7+8+8+9+9", "TLC~7+7+8+8+9+9")), row.names = 1234:1300, class = "data.frame")
可以在数据框中显示
head(df)
PdivR Regression
1234 0.93 TLC~8+8+10+10
1235 0.92 TLC~8+8+10+10
1236 0.97 TLC~8+8+10+10
1237 1.07 TLC~8+8+10+10
1238 1.08 TLC~8+8+10+10
1239 1.02 TLC~8+8+10+10
如果我们将注意力集中在 列上Regression
,我们会发现数字是重复的 ( TLC~8+8+10+10
)。
如何以时尚的方式删除这些重复的数字,以便Regression
正确配置列?在前面的示例中,正确的值将是TLC~8+10
解决方案
我们可能会使用
df$Regression <- gsub("(\\d+\\+)\\1+", "\\1",
gsub("(\\+\\d+)\\1+", "\\1", df$Regression))
或者也可以使用strsplit
df$Regression <- sapply(strsplit(df$Regression, "[[:punct:]]"),
function(x) deparse(reformulate(unique(x)[-1], response = x[1])))
推荐阅读
- javascript - WebDriverIO - 处理提示登录消息
- python - How to install pip specifically for Python3 on CentOS 7?
- sql - Informix 窗口函数范围子句的行为类似于行子句
- javascript - Javascript Discord,给提到的用户一个角色
- django - 如何调试从计算机到服务器的连接,服务器端
- javascript - Split array into chunks/bulks and made operations with them one by one
- php - 将链接添加到自定义表单
- java - 如何解决 Java 和 Spring Boot 中的 slf4j logback 类路径错误?
- android - 在模拟器和真实设备上使用语音识别时的“网络未连接”,尽管清单
- veins - 在 Veins 中发送消息和路边到路边 (R2R) 通信