2013-10-16 30 views
1

我絕對是R的新手......我真的很感謝您的幫助!這是我的問題。我有一個數據集,這是關於不同飲食餵養雞的體重增加情況。我爲所有數據創建了一個data.frame。我試圖找出體重最輕的雞的身份證。所以我首先對數據進行排序: sort(all$'weight.diff')但我不知道如何從所獲得的體重最小的雞中提取所有信息。而且我也想知道如何確定獲得最多體重的雞的飲食。在R中,如何識別一個值屬於哪一行

下面是數據的一個例子,我有

X1 <- c(1,2,3,4,5,6,7,8,9,10,11,12) 
X2 <- c('A','B','B','D','D','A','A','A','B','C','C','A') 
X3 <- c(126,114,128,120,68,106,112,163,109,158,117,83) 
X4 <- c(269,212,259,231,76,220,288,318,250,361,197,169) 
all <- data.frame('ID'=X1,diet=X2,'10'=X3,'20'=X4) 
all X5 <- X4-X3 
all <- data.frame(all,'diff'=X5) 
all sort(all$'diff') 

謝謝!

+0

也看看'?which'注意它有一個名爲'arr.ind'的參數,當它被設置爲TRUE時會給你找到的值的row/col索引 –

回答

0

有在你的代碼中的一些錯誤,我認爲你的意思是所有的$ X5。之後你不需要任何東西。

其中任何一個應該可以將所獲得的最小重量信息提取出來。

all[which(all$X5 == min(all$X5)), ] 

all[order(all$X5), ][1, ] 

爲了得到最有分量的信息僅上漲增加的減少= TRUE位,然後把第一行,只有你有興趣在列。

all[order(all$X5, decreasing = TRUE), ][1, 'diet'] 
1

沒有必要在這裏進行排序,你可以使用which.min

all[which.min(all$diff),] 
    ID diet X3 X4 diff 
5 5 D 68 76 8 

PS:打造你的變量差異,你可以這樣做:

all <- data.frame('ID'=X1,diet=X2,X3=X3,X4=X4) 
all <- transform(all,diff=X4-X3) 
相關問題