3

私はテキストファイルにこのようなデータを持っています

fd50c4007b68a3737fe052d5a4f78ce8aa117f3d    SOEGIYH12A6D4FC0E3  1
fd50c4007b68a3737fe052d5a4f78ce8aa117f3d    SOFLJQZ12A6D4FADA6  1
fd50c4007b68a3737fe052d5a4f78ce8aa117f3d    SOHTKMO12AB01843B0  1
fd50c4007b68a3737fe052d5a4f78ce8aa117f3d    SODQZCY12A6D4F9D11  1
fd50c4007b68a3737fe052d5a4f78ce8aa117f3d    SOXLOQG12AF72A2D55  1
d7083f5e1d50c264277d624340edaaf3dc16095b    SOUVUHC12A67020E3B  1
d7083f5e1d50c264277d624340edaaf3dc16095b    SOUQERE12A58A75633  1
d7083f5e1d50c264277d624340edaaf3dc16095b    SOIPJAX12A8C141A2D  1
d7083f5e1d50c264277d624340edaaf3dc16095b    SOEFCDJ12AB0185FA0  2
d7083f5e1d50c264277d624340edaaf3dc16095b    SOATCSU12A8C13393A  2

変数に正常に保持できますが、次のとおりです。

  1. このデータを 3 番目のフィールドに関して並べ替える必要があります。
  2. 最初のフィールドに関してデータをソートし、同じ最初のフィールドに関してグループ化し、グループ内の 3 番目のフィールドを合計する必要があります。

R言語でできますか?

出力は次のようになります。

fd50c4007b68a3737fe052d5a4f78ce8aa117f3d 5
d7083f5e1d50c264277d624340edaaf3dc16095b 7
4

2 に答える 2

3

質問で(一種の)述べているように、2つの問題があります。

  1. 別の変数を条件とする変数の合計を計算する
  2. データの並べ替え

plyr最初の問題は、パッケージを使用して解決できます。

##Some dummy data
library(plyr)
dd = data.frame(V1 = rep(c("A", "A", "B"), 4), V2 = rep(1:3,each=2 ))

##The function ddply takes in a data frame dd
##Splits the data frame by column V1
##Sums the column V2
dd1 = ddply(dd, "V1", summarise,  V2 = sum(V2))

2番目の問題は、 「データフレームの並べ替え方法」を検索することで解決できます

dd1[with(dd1, order(V2)), ]
于 2012-07-27T11:27:32.537 に答える
3

Q1: データフレームを 1 列で並べ替えるには、一般的にorder. 順番にデータフレームに名前を付ける必要がありますが、これは新しい userR には不必要に思えるかもしれません。ただし、数値インデックスは非常に柔軟であり、さまざまな構成の数値ベクトルも有用な結果を生成できるため、特定のベクトル オブジェクトの要件が必要です。

> dat[ order(dat$V1), ]
                                         V1                 V2 V3
6  d7083f5e1d50c264277d624340edaaf3dc16095b SOUVUHC12A67020E3B  1
7  d7083f5e1d50c264277d624340edaaf3dc16095b SOUQERE12A58A75633  1
8  d7083f5e1d50c264277d624340edaaf3dc16095b SOIPJAX12A8C141A2D  1
9  d7083f5e1d50c264277d624340edaaf3dc16095b SOEFCDJ12AB0185FA0  2
10 d7083f5e1d50c264277d624340edaaf3dc16095b SOATCSU12A8C13393A  2
1  fd50c4007b68a3737fe052d5a4f78ce8aa117f3d SOEGIYH12A6D4FC0E3  1
2  fd50c4007b68a3737fe052d5a4f78ce8aa117f3d SOFLJQZ12A6D4FADA6  1
3  fd50c4007b68a3737fe052d5a4f78ce8aa117f3d SOHTKMO12AB01843B0  1
4  fd50c4007b68a3737fe052d5a4f78ce8aa117f3d SODQZCY12A6D4F9D11  1
5  fd50c4007b68a3737fe052d5a4f78ce8aa117f3d SOXLOQG12AF72A2D55  1

Q2: カテゴリ内のベクトルを合計してデータフレームを返すには、次を使用しますaggregate

> with(dat , aggregate(V3 ~ V1) )
                                        V1 V3
6 d7083f5e1d50c264277d624340edaaf3dc16095b  7
1 fd50c4007b68a3737fe052d5a4f78ce8aa117f3d  5

注文が必要な場合:

> dat2 <- with(dat , aggregate(V3 ~ V1) )
> dat2[order(dat2$V1), ]
                                        V1 V3
6 d7083f5e1d50c264277d624340edaaf3dc16095b  7
1 fd50c4007b68a3737fe052d5a4f78ce8aa117f3d  5
于 2012-07-28T00:51:16.630 に答える