2016-07-18 9 views
-5

私は、データベースに年齢を探していました、私はGet the difference between dates in terms of weeks, months, quarters, and years?forループ中にRに新しい列を追加する方法は?

にこのコードを問題を解決するために、この答えを使用し、私が何年に

age <- function(dob, age.day = today(), units = "years", floor = TRUE) { 
    calc.age = interval(dob, age.day)/duration(num = 1, units = units) 
    if (floor) return(as.integer(floor(calc.age))) 
    return(calc.age) 
} 

しかし、私はforループを使用してループを実行し、しようとしていますを見つけるために使用データベース顧客の新しい列に値を保存するために、私はそうすることができません。

私が得た結果は、年齢の列に同じ値です。どこが間違っていますか?

+1

ため

for (i in customer$dateofbirth) customer$age[i] <- age(as.Date(i)) 

@RHertelのおかげで便利です([良い質問をする方法]についての情報をお読みくださいhttp://stackoverflow.com/help/how-to-ask)と[再現可能な例]を与える方法(http://stackoverflow.com/questions/5963269)を参照してください。これは他の人があなたを助けることをはるかに容易にします。 – zx8754

+0

私は理解していますが、インターネットにアクセスできないリモートコンピュータのデータベースを共有しているところです。私はできる限り私の質問を編集しようとします。 –

答えて

1
library(dplyr) 
customer <- customer %>% 
    rowwise() %>% 
    mutate(age = age(as.Date(dateofbirth))) 
+0

来る "文字列が標準的な醜悪なフォーマットではありません" –

+0

サンプルデータなしでさらにトラブルシューティングすることはできません。あなたの質問のコメントを参照してください。 – Maiasaura

2

あなたがforループを使用したい場合は、多分これはコメントage(as.Date(i))

+1

@RHertel:コメントありがとう。私はそれを見落とした。 – user2100721

+1

ようこそ。しかし、私はこれがうまくいくかどうかはわかりません。 OPは再現可能な例を提供していない。 – RHertel

関連する問題