私が間違っていることについてはおそらく本当に簡単な説明がありますが、今日はかなり長い間これに取り組んできましたが、まだこれを機能させることができません。これは公園を散歩するようなものだと思っていましたが、私のコードは期待どおりに機能していません。
この例では、次のようなデータ フレームがあるとします。
df
Row# user columnB
1 1 NA
2 1 NA
3 1 NA
4 1 31
5 2 NA
6 2 NA
7 2 15
8 3 18
9 3 16
10 3 NA
基本的に、最初の (および最後の) 関数 (TTR ライブラリ パッケージ内) を使用して、各ユーザーの最初の非 NA 値を取得する新しい列を作成したいと思います。したがって、私の目的のデータフレームはこれになります。
df
Row# user columnB firstValue
1 1 NA 31
2 1 NA 31
3 1 NA 31
4 1 31 31
5 2 NA 15
6 2 NA 15
7 2 15 15
8 3 18 18
9 3 16 18
10 3 NA 18
私は主にグーグルを使って見回しましたが、正確な答えを見つけることができませんでした。
これは私が試した私のコードの一部ですが、私が望んでいた結果が得られませんでした (メモ、これは記憶から持ってきているので、これらにはさらに多くのバリエーションがありますが、これらは一般的な形式です私が試してきたこと)。
df$firstValue<-ave(df$columnB,df$user,FUN=first,na.rm=True)
df$firstValue<-ave(df$columnB,df$user,FUN=function(x){x,first,na.rm=True})
df$firstValue<-ave(df$columnB,df$user,FUN=function(x){first(x,na.rm=True)})
df$firstValue<-by(df,df$user,FUN=function(x){x,first,na.rm=True})
失敗しました。これらは各グループの最初の値を与えるだけで、NA になります。
繰り返しますが、これらは私の頭の上からのほんの数例です。na.exclude、na.omit、na.action(na.omit) などを使用して、na.rm で遊んでみました...
どんな助けでも大歓迎です。ありがとう。