2

以下に示すデータフレームdf1の例と非常によく似たフォーマットのデータフレームがあります。3 つの列があります。2 つのカテゴリ変数と、特定の組み合わせを持つオブジェクトの量を指定する「カウント」列です。

このデータ フレームを、例のデータ フレームdf2に示されている形式に移動したいと考えています。「カウント」列の代わりに、各オブジェクトは単純に別の行に表示されます。

私はdplyrおよびtidyrパッケージを試してみましたが、まだRに精通していません。私が望む機能を実行するための良い方法は何ですか?

set.seed(1)
x1 <- c("Pants", "Shoes", "Scarf")
x2 <- c("Ugly", "Beautiful")
x3 <- sample(1:10, size=6, replace=T)

df1 <- data.frame(Object=rep(x1, 2),
                  Quality=rep(x2, each=3),
                  Count=x3);
df1; sum(df1[,3])

df2 <- data.frame(Object=c(rep("Pants", 3), rep("Shoes", 4), rep("Scarf", 6), 
                           rep("Pants", 10), rep("Shoes", 3), rep("Scarf", 9)),
                  Quality=c(rep("Ugly", 3), rep("Ugly", 4), rep("Ugly", 6), 
                            rep("Beautiful", 10), rep("Beautiful", 3), 
                            rep("Beautiful", 9))
                 )
head(df2); tail(df2)
4

1 に答える 1

6

他のパッケージを検討したい場合はexpandRows、私の「splitstackshape」パッケージから試すことができます。

使用法は次のとおりです。

> library(splitstackshape)
> df2 <- expandRows(df1, "Count")

> head(df2)
    Object Quality
1    Pants    Ugly
1.1  Pants    Ugly
1.2  Pants    Ugly
2    Shoes    Ugly
2.1  Shoes    Ugly
2.2  Shoes    Ugly
> tail(df2)
    Object   Quality
6.3  Scarf Beautiful
6.4  Scarf Beautiful
6.5  Scarf Beautiful
6.6  Scarf Beautiful
6.7  Scarf Beautiful
6.8  Scarf Beautiful
> nrow(expandRows(df1, "Count"))
[1] 35
于 2015-04-19T09:32:39.527 に答える