我有一个类似下面的数据框。
我想在year变量的字符串开头添加一个字符,该字符将根据第一个字符变化。
year <- c("991", "990", "985", "975", "001", "003")
name <- c("John", "Anna", "Amy", "Sarah", "Bob", "John")
test <- data.frame(year, name)
条件是:
不确定是否有办法结合for循环和strsplit来解决这个问题?
我的观点:
paste0(strsplit(test$year, '')[[1]][1], collapse = '')
有了这个,我得到了第一行的第一个字符,但我不知道如何把它放在一个循环中,而不是在其中添加一个条件。
答案 0 :(得分:2)
这是一个嵌套的ifelse
语句,
ifelse(substring(test$year, 1, 1) == 9, paste0(1, test$year),
ifelse(substring(test$year, 1, 1) == 0, paste0(2, test$year), paste0(7, test$year)))
#[1] "1991" "1990" "1985" "1975" "2001" "2003"
答案 1 :(得分:1)
library(data.table)
library(stringr)
setDT(test)
test[str_detect(year, "^0"), new := paste0("2", year)]
test[str_detect(year, "^9"), new := paste0("1", year)]