2017-04-05 20 views
0

私は以下のようなデータフレームを持っています。条件に基づいて文字列を変更してください

年変数の文字列の先頭に文字を追加したいのですが、これは最初の文字に基づいて変わります。

year <- c("991", "990", "985", "975", "001", "003") 
name <- c("John", "Anna", "Amy", "Sarah", "Bob", "John") 

test <- data.frame(year, name) 

条件は次のようになります。

  • 文字列== 9の最初の文字場合は、その前に「1」を追加するよりも、
  • 文字列の最初の文字が== 0の場合、よりは、この問題を解決するためにループとstrsplitのために結合する方法があり

わからない場合は、「7」を追加し、それエルス

  • の前に「2」を追加しますか?

    マイattemnt:これにより

    paste0(strsplit(test$year, '')[[1]][1], collapse = '') 
    

    私は最初の行の最初の文字を取得しますが、ループ内でこれを入れてどのようにイムわからない、そしてその中の条件を追加するよりも。ここで

  • 答えて

    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" 
    
    +0

    感謝。それは問題を解決した。 – Prometheus

    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)] 
    
    関連する問題