2

基本的にデータフレーム内の別の変数の開始値である新しい変数を作成しようとしています。サンプルデータ:

id <- rep(c(1, 2), each = 8)
outcome <- rep(1:5, length.out = 16)
time <- rep(c(0, 1, 3, 4),4)
Attitude <- rep(c('A1', 'A2', 'A1', 'A2'), each = 4)
df <- data.frame(id, Attitude, outcome, time)

私が取得したいのは、 for の値に等しく、また に依存する new_var (またはその他のもの) という名前のoutcome新しいtime == 0id = idですAttitude。したがって、私が拡張したいのdataframeは次のとおりです。

df$new_var <- c(1,1,1,1,5,5,5,5,4,4,4,4,3,3,3,3)

その後、適切なコーディングを行います。SASでは、関数を使用してこれを実行できることを知っていlagます。「回避策」ではないソリューションを本当に感謝しています。SASのようなものですが、適切なrソリューションです。最終的にはrも強くなりたいです。

関連: SAS としての R の保持と遅延機能 しかし、私は、インデックスまたは「通常の」r の方法に基づくいくつかのソリューションを好みます。そしてここでも、他の条件に依存しません。

したがって、ここで重要なのは、コーディングがさまざまなidsレベルattitude/変数 (A1、A2、...) に対して機能し、outcome valueattime == 0が基本的に にコピーされることnew_varです。

メッセージを明確に伝えることができれば幸いです。そうでない場合は、コード例の小さな部分とそれをどのように拡張したいかが十分に明確であると思います。提案を楽しみにしています。

EDIT @jogo回答の別のコード例。

ID <- rep(1, 36)
Attitude <- rep(c('A1', 'A2','A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9'), 
length.out =36)
Answer_a <- rep(1:5, length.out = 36)
time <- as.character(rep(c(0, 1, 3, 4), each = 9))

df <- data.frame(ID, Attitude, Answer_a, time)
df$time <- as.character(df$time)
4

2 に答える 2