言い換えれば、別の列(たとえばlocation
)を維持しながら、1つの列(たとえばcolumn
)をどのように集計しますか?R&Dplyr:summarize()の後に元のデータフレーム/データテーブルの列を追加する方法は?
このMWEは私の問題を示しています。 summarise()
を実行した後、location
列にどのように追加すればよいですか? summarise()
の前に、元の列を維持できるように、「レベルアップ」を含む解決策がありますか?
test <- as.data.table(data.frame(event_id = c("A","B","A","A","B"),
income = c(1,2,3,4,5),
location = c("PlaceX","PlaceY","PlaceX","PlaceX","PlaceY")))
test
event_id income location
1: A 1 PlaceX
2: B 2 PlaceY
3: A 3 PlaceX
4: A 4 PlaceX
5: B 5 PlaceY
test %>%
group_by(event_id) %>%
summarise(mean_inc = mean(income))
Source: local data table [2 x 2]
event_id mean_inc
(fctr) (dbl)
1 A 2.666667
2 B 3.500000
次は動作しません:
test %>%
group_by(event_id) %>%
summarise(mean_inc = mean(income),
location = location)
Source: local data table [5 x 3]
event_id mean_inc location
(fctr) (dbl) (fctr)
1 A 2.666667 PlaceX
2 A 2.666667 PlaceX
3 A 2.666667 PlaceX
4 B 3.500000 PlaceY
5 B 3.500000 PlaceY
私の所望の出力は次のようになります。
Source: local data table [2 x 3]
event_id location mean_inc
(fctr) (fctr) (dbl)
1 A PlaceX 2.666667
2 B PlaceY 3.500000
この特定のインスタンスでは、 'location = unique(location)'のようなものを使用するか、 'group_by'に' location'を含めることができます。もっと複雑なユースケースがありますか? – aosmith
ありがとう、しかし、私のデータには少なくとも100の変数があり、ソリューションはきれいにスケールアップするのが難しいようです。 – user2205916
これは 'mutate'を使う方が良いかもしれないし、' summarize'の代わりに '.keep_all = TRUE'を使って' distinct'を使う方が良いかもしれないと思います。 – aosmith