0

次のようなデータフレームがあります。

user event score
1      2     0.5
1      3     0.2
2      3     0.7
3      1     0.9
3      4     0.1

結果を取得したい:

user event
1    2,3
2    3
3    1,4

Rでこれを行うにはどうすればよいですか?
R には Java や Python などのプログラミング言語の基本データ構造が欠けているため、作業が不便だと思うことがあります。

4

2 に答える 2

2

data.frameが呼び出されたと仮定してmydata、次のようにします。

aggregate(event ~ user, mydata, I)

数値表現を保持するリストを取得するか、

aggregate(event ~ user, mydata, paste, collapse = ", ")

値を貼り付けて文字ベクトルを作成します。

これらがどのように異なる方法で格納されているかを示すデモンストレーションを次に示します。

x1 <- aggregate(event ~ user, mydata, paste, collapse =",")
x2 <- aggregate(event ~ user, mydata, I)
x1$event
# [1] "2,3" "3"   "1,4"
x2$event
# $`0`
# [1] 2 3
# 
# $`1`
# [1] 3
# 
# $`2`
# [1] 1 4
# 

個人的には、必要に応じてその列で使用できるようにto を使用Iすることを好みます。pastelapply()

于 2013-01-23T06:02:57.813 に答える
1
 data.frame(user=unique(dat$user), event=tapply(dat$event, dat$user, c)  )
#
  user event
1    1  2, 3
2    2     3
3    3  1, 4
于 2013-01-23T06:26:03.373 に答える