2017-11-25 8 views
2

こんにちは私はReshapeパッケージを使用してデータを縦方向のデータに変換しようとしています。誰かが私を助けることができれば感謝します、ありがとう!データを縦方向のデータに変換する

m <- matrix(sample(c(0, 0:), 100, replace = TRUE), 10) 
ID<-c(1:10) 
dim(ID)=c(10,1) 
m<- cbind(ID,m) 
d <- as.data.frame(m) 
names(d)<-c('ID', 'litter1', 'litter2', 'litter3', 'litter4', 'litter5', 'litter6', 'litter7', 'litter8', 'litter9', 'litter10') 
print(d) 
    ID litter1 litter2 litter3 litter4 litter5 litter6 litter7 litter8 litter9 litter10 
    1  0  0  0  3  1  0  2  0  0  3 
    2  0  2  1  2  0  0  0  2  0  0 
    3  1  0  1  2  0  3  3  3  2  0 
    4  2  1  2  3  0  2  3  3  1  0 
    5  0  1  2  0  0  0  3  3  1  0 
    6  2  1  2  0  3  3  0  0  0  0 
    7  0  1  0  3  0  0  1  2  2  0 
    8  0  1  3  3  2  1  3  2  3  0 
    9  0  2  0  2  2  3  2  0  0  3 
    10 2  2  2  2  1  3  0  3  0  0 

は私が私たちのごみのカテゴリを伝えるコラム「ID」、「ごみのカテゴリー」で縦データに上記のデータを変換したいつまり、1-10:次のように

データがありますそれぞれのごみカテゴリの数を教えてくれる「ごみの数」と「ごみの数」を示しています。

ありがとうございました。

答えて

0

あなたができることを次のように

library(reshape2) 
d = melt(d, id.vars=c("ID")) 
colnames(d) = c('ID','littercategory','litternumber') 
# remove the text in the littercategory column, keep only the number. 
d$littercategory = gsub('litter','',d$littercategory) 
d = d[d$litternumber!=0] 

出力時:

ID littercategory litternumber 
    1    1   4 
    2    1   8 
    3    1   6 
    4    1   4 
    7    1   6 
    8    1   5 
10    1   10 
    1    2   6 
    2    2   9 

あなたが見ることができるように、唯一の順序はあなたが要求した出力など、さまざまですが、私はあなたができると確信しています自分で修正してください。 (そうでない場合は、それを行う方法について多くのリソースがあります)。

希望すると便利です。

関連する問題