1
次のようにIはRでデータフレームを持っている:NAsを除外しながら、データフレーム内で定義されたグループ化の行スライスを行う方法は?
df<-data.frame(id=rep(1:3,each=2),date=rep(c(NA,"date1","date2"),each=2),value=rep(c(4.1,9.4,5.6,6),c(2,2,1,1)))
# id date value
# 1 1 <NA> 4.1
# 2 1 <NA> 4.1
# 3 2 date1 9.4
# 4 2 date1 9.4
# 5 3 date2 5.6
# 6 3 date2 6.0
Iは1以上の行がある場合は、同じID、同じ日付と同じ値を有するように、データフレームから重複行を削除したいと思い、私は最初の行だけを取って、他の行を削除します。
私の最初の本能は、次の操作を行うことです。しかし
library(dplyr)
df %>% group_by(id,date,value) %>% slice(1)
、私は空の「日付」と行のslice(1)
を無視することです
# id date value
# 1 1 <NA> 4.1
# 2 1 <NA> 4.1
# 3 2 date1 9.4
# 4 3 date2 5.6
# 5 3 date2 6.0
で何をしたいです。
どうすればいいですか?
'base R'の例では、' duplicated'の引数を 'df'から' cbind(id、date、value) 'に置き換えようとしましたが、動作しませんでした。何故ですか? – HNSKD
@HNSKD 'id'、' date'オブジェクトが個別に作成されていない場合、 'df 'の環境の中にあるので、動作しません。あなたは 'cbind(d $ id、d $ date、...'または 'df [!duplicated(df、cbind(id、date、value)))| is.na(df $ date) ] ' – akrun