前の質問と同様ですが、もっと複雑です。idでデータフレーム内のデータの一部を減算する
date <- c("2016-03-24","2016-03-24","2016-03-24","2016-03-24","2016-03-24",
"2016-03-24","2016-03-24","2016-03-24","2016-03-24","2016-03-24")
location <- c(1,1,2,2,3,3,4,4,"out","out")
sensor <- c(1,16,1,16,1,16,1,16,1,16)
Temp <- c(35,34,92,42,21,47,37,42,63,12)
df <- data.frame(date,location,sensor,Temp)
私は他の場所を無視した場所「4」から位置「アウト」を減算したいと私は、日付とセンサーでそれをやりたいです。私は以下のコードを試しましたが、結果としてNAsを取得しました。私は何が間違っていたのか分かりません。
DailyMaxInOutDiff04 <- df %>% group_by(date, sensor) %>% summarise(diff = Temp[location=="4"]- Temp[location=="out"])
編集この例では、今取り組んでいるが、それは私の実際のデータフレームで作業されていません。
私が望む結果は以下の通りです:
date location sensor diff
1 2016-03-24 4 1 -26
2 2016-03-24 4 16 30
で 'as.data.frame'をしないでください'cbind'; data.frameを作成する前に、マトリックスを作成することによって、すべてのデータをキャラクターに強制しています。単に 'data.frame'を単独で使うと、' NA'がなくなります。 – alistaire
@alistaireありがとうございます。これはこの例では機能しますが、私の実際のデータフレーム( 'cbind'と' as.data.frame'を使わない)では動作しませんが、まだNAsを生成します。日付と場所はデータフレーム内の文字なので、データフレームの要素と同じである可能性がありますか? – phaser
与えられた操作がその型ではうまくいかない場合は、本当に重要です。 'group_by'は気にしませんし、' == 'はうまくいくはずですので、明らかに別のものです。 – alistaire