R如何更改以30结尾的值?

时间:2017-05-27 13:50:56

标签: r data-science

如何更改以30结尾的值?

id  term
1  200110
2  200130
3  200230
4  200430

为:

id  term
1  200110
2  200210
3  200310
4  200510

3 个答案:

答案 0 :(得分:3)

df$term = ifelse(df$term%%100==30,term-20,term)

答案 1 :(得分:1)

这是最简单的字符串操作。

term <- as.character(term)
term <- gsub("30$","10",term)
term <- as.numeric(term)

“30 $”在第二行代表“30后面是一行”。

答案 2 :(得分:1)

我们也可以使用substr

library(data.table)
setDT(df1)[substr(term, nchar(term)-1, nchar(term)) == 30, term := term - 20L]
df1
#   id   term
#1:  1 200110
#2:  2 200110
#3:  3 200210
#4:  4 200410

数据

df1 <- structure(list(id = 1:4, term = c(200110L, 200130L, 200230L, 
200430L)), .Names = c("id", "term"), class = "data.frame", row.names = c(NA, 
-4L))