私は特定のデータ操作の問題に苦労しています。私は最近これを投稿し、動物園のライブラリにna.locf関数を提案しましたが、これは宿題の問題です。TAはこれを解決するために他のライブラリをロードしないように指定しました。したがって、もっと伝統的なデータ操作アプローチを使用する必要があります。 Iは、ブランク(行4~6はすべて06月21行8-9あるDATE列の値を下にドラッグする必要がR - 累積和 - ブール値ベクトルの "like"演算
my_df[1:10,1:2]
DATE FLIGHT
1 May 26 NA
2 Jun 10 NA
3 Jun 21 NA
4 1
5 2
6 3
7 Jun 23 NA
8 1
9 2
10 Jun 25 NA
:私達は私の最初の10行を表示して、次のデータフレームを、与えられています6月23日など)。私はna.locfがこれを1つのライナーにする方法を理解しています。私はそれを使用できません。
次のように私の考えは次のとおりです。
は、使用してダウンにドラッグする必要があります日付つかむ:
repeat_dates = my_df$DATE[which(my_df$FLIGHT == 1)-1]
を各日付を繰り返す回数を持つベクトルを作成します。
:3のベクトルを取得するなど、ダウン2行6月23日をドラッグするために3列、2ダウン6月21日にドラッグすることに["Jun 21", "Jun 21", "Jun 21", "Jun 23", "Jun 23", ...]
repeat_count = [3, 2, ...]
使用rep.int(repeat_dates、REPEAT_COUNT)に対応します
、その後値
私はこれは、私が問題を取得することができます得ることができる場合、パート2を行う方法を確認していないを更新。私のTAは、cumsum()関数を使って、ブール値のベクトル(DATEが空白の1/0になる可能性があります)を提案しました。私はこれで苦労している、どんな助けもありがとう!
EDIT - 私はリンク内の溶液と一緒に行きました
dput(my_df[1:20,1:2])
structure(list(DATE = structure(c(-23961, -23946, -23935, NA,
NA, NA, -23933, NA, NA, -23931, -23911, -23893, NA, NA, -23891,
NA, NA, -23890, NA, NA), class = "Date"), FLIGHT = c(NA, NA,
NA, 1L, 2L, 3L, NA, 1L, 2L, NA, NA, NA, 1L, 2L, NA, 1L, 2L, NA,
1L, 2L)), .Names = c("DATE", "FLIGHT"), row.names = c(NA, 20L
), class = "data.frame")
forループとifステートメントは、日付が空の場合にのみ使用して前の値に置き換えることができます。 – tatxif
http://stackoverflow.com/questions/7735647/replacing-nas-with-latest-non-na-value – HubertL
[NAsを最新の非NA値に置き換える]の可能な複製(http:// stackoverflow .com/questions/7735647/replaced-nas-latest-non-na-value) – HubertL