0

1 つの列、名前、および別のサイトを含むデータ フレームがあり、一意の名前とサイトの関係の数を特定したい場合。

以下のスクリプトを書きました。それは機能しますが、私の実際のデータでは動きが鈍く、遅いです:

df = data.frame(name = c("dave", "bob", "dave", "john", "fred", "dave"), site = c(1,2,2,1,1,1))
redun = vector()
for (i in 1:length(df$name)){
  redun[i] = paste(df$name[i], df$site[i])
}
uniq = length(unique(redun))
4

3 に答える 3

1

集計を使用できます。これにより、誰が自分の名前に固有のサイトをいくつ持っているかがわかります。

aggregate( site ~ name , data = df , function(x) length( unique(x) ) )
#  name site
#1  bob    1
#2 dave    2
#3 fred    1
#4 john    1

また、名前ごとに固有のサイトの数を知りたい場合は、次のように合計します。

sum(aggregate( site ~ name , data = df , function(x) length( unique(x) ) )$site)
[1] 5
于 2013-04-22T14:22:37.360 に答える