2011-11-12 43 views
1

首先,我創建如下面的數據幀:尋找成對(並行)最小值

age=18:29 
height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5) 
height1=c(71.1,75,77.1,73.2,77.8,73.7,78.9,87.1,86.2,85.8,82.8,83.5) 
village=data.frame(age=age,height=height,height1=height1) 

現在,我想創建在所述數據幀中的第四列的是採用每每個較短人的身高排,例如第1行1 76.1與第71.1行應返回71.1等。

我試着用這個代碼做這個:

village=transform(village, shorter=min(height,height1)) 

而且我得到了一個奇怪的結果。它給了我兩列絕對最小值:

It gives me the absolute smallest height in BOTH columns

如何修改這個功能給我一個行通過行的基礎上的低價值?

回答

12

min函數查看整個向量。你想要的是pmin

> village$ageminht <- with(village, pmin(height, height1)) 
> village$ageminht 
[1] 71.1 75.0 77.1 73.2 77.8 73.7 78.9 81.1 81.2 81.8 82.8 83.5 
+0

謝謝。 「與」功能和「變換」功能之間有什麼區別,即什麼時候使用一個與另一個? – AME

+2

'within'函數更像'transform'而不是'with'。 'with'提供了一個可以返回結果的環境,但除非結合'<-'(賦值),否則它將不會產生永久效果。 –

+0

我還沒有看到''''上面有'''''''。 'within'不會在對象中進行實際更改,它只會返回與整個數據幀一樣大的值,因此您仍然需要使用'<-' –