aggregate對有相同元素的列進行共同的變化

2021-07-11 15:20:51 字數 3118 閱讀 6712

aggregate()函式 分組計算描述性變數

語法如下:

## for class 「data.frame」

aggregate(x, by, fun, …, simplify = true)

其中,by指定分組變數,必須是list物件。

## s3 method for class 『formula』

aggregate(formula, data, fun, …, subset, na.action = na.omit)

比較下面不同:

> aggregate(a[,-1],list(a$id),mean)

group.1 x1 x2 x3 x4

1 a -0.6610644

0.5104887 -0.48953077

0.1933413

2 b -0.2995482 -0.6844227 -1.00001083

0.4507054

3 c -0.9831631

0.2302809

0.07486895

0.4530656

> aggregate(a,by=list(a$id),mean)

group.1 id x1 x2 x3 x4

1 a na -0.6610644

0.5104887 -0.48953077

0.1933413

2 b na -0.2995482 -0.6844227 -1.00001083

0.4507054

3 c na -0.9831631

0.2302809

0.07486895

0.4530656

warning messages:

1: in mean.default(x[[i]], ...) :

argument is not numeric or logical: returning na

2: in mean.default(x[[i]], ...) :

argument is not numeric or logical: returning na

3: in mean.default(x[[i]], ...) :

argument is not numeric or logical: returning na

上面第二種用法出現了警告,因為用於計算的資料中包含了非數值列,最好像第一種用法,不把idid列帶入計算。

下面用公式形式計算:

aggregate(cbind(x1,x2,x3,x4)~id,data=a,mean)

id x1 x2 x3 x4

1 a -0.6610644 0.5104887 -0.48953077 0.1933413

2 b -0.2995482 -0.6844227 -1.00001083 0.4507054

3 c -0.9831631 0.2302809 0.07486895 0.4530656

formula中左側是分析變數,右側是分組變數。如果指定多個分組變數,用id1+id2的形式 。

aggregate(weight ~ feed, data = chickwts, mean)

# formula左側是需要分析的數值變數,右側是分組變數

feed weight

1 casein 323.5833

2 horsebean 160.2000

3 linseed 218.7500

4 meatmeal 276.9091

5 soybean 246.4286

6 sunflower 328.9167

aggregate幫助文件的例子:

example with character variables and nas

testdf <- data.frame(v1 = c(1,3,5,7,8,3,5,na,4,5,7,9),

v2 = c(11,33,55,77,88,33,55,na,44,55,77,99) )

by1 <- c(「red」, 「blue」, 1, 2, na, 「big」, 1, 2, 「red」, 1, na, 12)

by2 <- c(「wet」, 「dry」, 99, 95, na, 「damp」, 95, 99, 「red」, 99, na, na)

aggregate(x = testdf, by = list(by1, by2), fun = 「mean」)

group.1 group.2 v1 v2

1 1 95 5 55

2 2 95 7 77

3 1 99 5 55

4 2 99 na na

5 big damp 3 33

6 blue dry 3 33

7 red red 4 44

8 red wet 1 11

以上結果中把分組變數是na的自動刪除了

如果要把」na」作為分組變數,

fby1 <- factor(by1, exclude = 「」)

fby2 <- factor(by2, exclude = 「」)

aggregate(x = testdf, by = list(fby1, fby2), fun = 「mean」)

group.1 group.2 v1 v2

1 1 95 5.0 55.0

2 2 95 7.0 77.0

3 1 99 5.0 55.0

4 2 99 na na

5 big damp 3.0 33.0

6 blue dry 3.0 33.0

7 red red 4.0 44.0

8 red wet 1.0 11.0

9 12 na 9.0 99.0

10 na na 7.5 82.5

演算法導論 7 2 針對有相同元素值的快速排序

題目詳見演算法導論7 2習題,在這裡我就不再贅述。本文分為三個部分,第一部分是寫我改進演算法的思路,第二部分是演算法實現,第三部分是程式執行結果。思路 演算法導論 裡介紹的partition沒有考慮元素相等的情況,但是就算存在相同元素快排其實也可以適用的,只是相等的元素當作大於key的元素處理了。習...

有相同數字?

檔名稱 完成日期 2013年 12月3 日 版本號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 從檔案讀入10個數進二維陣列,進行一系列操作 程式輸出 問題分析 演算法設計 includeusing namespace std bool existthesame int a,int...

Python查詢相同元素,不同元素

python 給定兩個列表,找出相同元素和不同元素 給定兩個列表,找出相同元素和不同元素 list1 1,2,4 list2 3,4,5 set1 set list01 將列表轉換成集合 set2 set list02 print set1 set2 相同元素 print set1 set2 不同元...