如何更改以30结尾的值?
id term
1 200110
2 200130
3 200230
4 200430
为:
id term
1 200110
2 200210
3 200310
4 200510
答案 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))