r - 用R中的data.frame中的给定替换字符替换数字
问题描述
我有各种类型的 data.frames,每一个都可以在其中的某个地方包含一个长数字。A
并且B
是两个真实的例子。
我想知道如何ct
用给定的替换列中的任何数字元素replacement.name
?
请参阅可重现的 R 代码和所需的输出如下。
A <- data.frame(ct = c("C,0.839662447257384 - T,0.839662447257384", "No,C,0.44462447257384 - Yes,T,0444462447257384"))
B <- data.frame(ct = "0.822125181950509,C,Female - 0.822125181950509,T,Female")
replacement.name = "year" # Put this in place of any numeric value in column `ct`
A.desired <- data.frame(ct = c("C,year - T,year", "No,C,year - Yes,T,year"))
B.desired <- data.frame(ct = "year,C,Female - year,T,Female")
解决方案
我们可以使用gsub
删除数字.
并替换为“年份”
A$ct <- gsub("[0-9.]+", "year", A$ct)
A$ct
#[1] "C,year - T,year" "No,C,year - Yes,T,year"
B$ct <- gsub("[0-9.]+", "year", B$ct)
B$ct
#[1] "year,C,Female - year,T,Female"
上述解决方案有一个错误,即如果.
在其他地方有,它可以替换它。为了避免这种情况
gsub("[0-9]+\\.[0-9]+", "year", B$ct)
如果这些是在多个数据集上完成的,我们可以创建一个函数
f1 <- function(dat, colnm, replstr){
dat[[colnm]] <- gsub("[0-9]+\\.[0-9]+", replstr, dat[[colnm]])
dat
}
f1(A, 'ct', 'year')
推荐阅读
- python - Pandas groupby(+15 分钟运行时间)
- c - 为什么我的
将 __sig_atomic_t 定义为 int 而不是 volatile int - android - 使用 SearchView 进行搜索时出现 Android 列表视图错误
- vba - 使用指定的搜索关键字过滤表
- typescript - 具有 rxjs.Observable 属性的复杂对象
- reactjs - 如何在 FlatList 中记录其他事件?
- swift - 检索用户电子邮件以进行用户名签名 firebase
- c++ - gflags 参数提取在调试模式下不起作用(C++)
- matlab - 将单个单元格中的值转换为矩阵
- python - Tensorflow:数组activation1,它是Div运算符的输入,产生输出数组dropout/div,缺少最小/最大数据