2016-03-30 4 views
2

申し訳ありませんが、すでに数多くの質問があります。データフレームをローにします。私はplyrパッケージで '数え'を提案するたくさんの解決策を見つけましたが、このエラーで何も見つかりませんでした。私は別の質問で与えられた例に再現しようとしていました:plyrが正しく機能していない場合は、「結果のサ​​イズが間違っています(3)、8または1が返されます」

> df = data.frame(x1=c(0,1,1,1,2,3,3,3), 
      x2=c(0,1,1,3,2,3,3,2), 
      x3=c(0,1,1,1,2,3,3,2)) 

> count(df, vars = c("x1", "x2", "x3")) 

をが、これは次のエラーが返されます。

Error: wrong result size (3), expected 8 or 1 

私は自分のデータと同じものを取得します。私はまた、別の例を試してみた:

> bevs <- data.frame(cbind(name = c("Bill", "Llib"), drink = c("coffee", "tea", "cocoa", "water"), cost = seq(1:8))) 
> bevs$cost <- as.integer(bevs$cost) 
> bevs 

name drink cost 
1 Bill coffee 1 
2 Llib tea 2 
3 Bill cocoa 3 
4 Llib water 4 
5 Bill coffee 5 
6 Llib tea 6 
7 Bill cocoa 7 
8 Llib water 8 

> count(bevs, "name") 

これは単なる行数ではなく、名前ごとに一意の行数を返します。

Source: local data frame [1 x 2] 

"name"  n 
(chr) (int) 
1 name  8 

任意の助けをいただければ幸いです......私は正確に例のコードをコピーしていますので、私は何が起こっているのかわかりません!

おかげ

答えて

1

dplyrを使用する代替:

df %>% count_(names(.))またはdf %>% count(x1, x2, x3)

います:

#Source: local data frame [6 x 4] 
#Groups: x1, x2 [?] 
# 
#  x1 x2 x3  n 
# (dbl) (dbl) (dbl) (int) 
#1  0  0  0  1 
#2  1  1  1  2 
#3  1  3  1  1 
#4  2  2  2  1 
#5  3  2  2  1 
#6  3  3  3  2 
+1

偉大な、これは完全に動作します、ありがとう! – Lau99

2

は、私はあなたがplyrmore there)後dplyrをロードしたと思います。以下を試してください:plyr::count(df, vars = c("x1", "x2", "x3"))plyr::count(bevs, "name")

+0

を彼...または_she_!その場合は、すべての列が含まれ、セッションを再起動するか、パッケージをデタッチする必要があると思います。 –

+0

私は、はい、あなたが正しいことを確認します。私はいつ別のオプションを試してロードしたのか分かりませんでしたが、再起動してplyrをロードするだけで、元のコードが動作しました。すべてソートされています。ありがとうございました! – Lau99

関連する問題