の日付に一致して列にわたって合計する私は列のIDと日付を持つデータフレーム<strong>DF1</strong>を持って
ID <- c(101,101,101,102,102)
date <- c("X20170101","X20170103","X20170106","X20170102","X20170104")
df1 <- data.table(ID,date)
ID date
101 X20170101
101 X20170103
101 X20170106
102 X20170102
102 X20170104
と列のIDを持つデータフレームDF2、多くの日付など(文字列「XYYYYMMDD」など)ヘッダ私がフォローを含む DF1 に列数を追加したいと思い
ID <- c(100,101,102,103,104)
X20170101 <- c(1,NA,NA,2,1)
X20170102 <- c(NA,1,1,1,NA)
X20170103<-c(NA,1,NA,2,1)
X20170104 <- c(2,3,NA,2,1)
X20170105 <- c(1,1,NA,1,NA)
X20170106<-c(NA,1,NA,2,1)
df2=data.table(ID,X20170101,X20170102,X20170103,X20170104,X20170105,X20170106)
ID X20170101 X20170102 X20170103 X20170104 X20170105 X20170106
100 1 NA NA 2 1 NA
101 NA 1 1 3 1 1
102 NA 1 NA NA NA NA
103 2 1 2 2 1 2
104 1 NA 1 1 NA 1
各ID(例:101)と日付(たとえば、 DF1でX20170101)、DF1マイナス1日にその日付(e.g.X20170101)と連続する一方との間DF2に対応するセルの和(例えばX20170102、ないX20170103)。つまり、新しいdf1は次のようになります。
ID date count
101 X20170101 1
101 X20170103 5
101 X20170106 1
102 X20170102 1
102 X20170104 NA
ありがとうございました。
library(dplyr)
count <- aggregate(df1$date), by = list(df1$date), FUN = length)
df1 <- merge(df1, count, by = "date", all.x = TRUE)
はこれが動作するかどうか、私に教えてください:dplyr
パッケージを使用して
ムーディー、あなたの解決に感謝します。私には1つの問題しかありません。あなたのコードでは、元のdf1には存在しないID = 102と日付= X20170101の新しい行が追加されています。これを避けることは可能でしょうか? – user3618451
私は、asab –
を編集します編集された答えを参照してください、値の1つがあなたの期待された出力として述べたものと異なっていることに注意してください、しかし、私はそれがあなたの間違いかもしれないと信じます、 t。 –