7 从字符串里提取数字并做后续运算
题目7: 我的数据中某些列含有2L,3ND这种数字和字母的组合:
需要把字母去掉,然后剩下的数字除以2(2L变为2,然后除以2,3ND变为3,然后除以2,不含L或者ND的数字保持不变)。
N 版
dd_n <- as.numeric(gsub('[a-zA-Z]+',
'',
dd[, 1]))
dd_m <- ifelse(grepl('[a-zA-Z]+',
dd[, 1]),
5,
1)
dd_n/dd_m
## [1] 0.4 0.6 66.0
T 版
library(tidyverse)
dd1 <- separate(dd, num,
sep = "[:upper:]",
into = c("num", "letter"))
dd1$num <- as.numeric(dd1$num)
for (i in 1:length(dd1$num))
if (is.na(dd1$letter[i])) {
dd1$num[i] = dd1$num[i]
} else {dd1$num[i] = dd1$num[i] / 5}
dd <- dd1[1]
dd
## num
## 1 0.4
## 2 0.6
## 3 66.0
贡献者为 @wqssf @Liechi @dapengde 等,来自 https://d.cosx.org/d/420859。↩