2011-04-05 96 views
3

關於R中數據幀的問題我想從數據幀中提取一行,連同其在原始數據幀中的位置(行號)。這個想法是創建一個新的數據幀,其中包括從前一個數據幀中提取的行信息,以及來自前一個數據幀的行位置。獲取R數據幀的行號

patchLocalNo <- patchList[which(patchListTop5$sensitivity == patchLocalSpec),] 

我想要做的是從patchList中取得滿足條件的行號,並將它們添加到patchLocalNo中的列中。

在此先感謝您,我已經在網上搜索並詢問同事,我所能想出的一切都是在perl中對數據進行預處理。

+1

一些樣本數據,你想將是非常有益的輸出的一個例子。 – 2011-04-05 14:48:56

回答

8

我想你已經回答了你自己的問題。

其中()的結果是一個帶有想要提取的行號的向量。

df <- data.frame(x = runif(20)) 

w <- which(df$x > 0.9) 
w 
[1] 9 11 14 16 20 

data.frame(which=w, df=df[w, ]) 

    which  df 
1  9 0.9437138 
2 11 0.9995509 
3 14 0.9237888 
4 16 0.9526003 
5 20 0.9191727 
+0

OP正在尋找匹配整行,而不僅僅是一個單一的值,並希望將行號附加到檢索的值... – Benjamin 2011-04-05 15:16:35

+1

@Benjamin這可能是這樣的情況,儘管從問題不完全清楚。在任何情況下,我的示例代碼都會執行此操作 - 識別與布爾語句相匹配的數據框的行號,並將其附加到提取的行中。如果沒有更好的問題說明和一些示例數據,我想不出一個明顯的方法來改進答案。 – Andrie 2011-04-05 15:34:00

+0

提供的解決方案適用於我的腳本,「識別與布爾語句相匹配的數據框的行號,並將其附加到提取的行」正是這個解決方案所做的。 – wespiserA 2011-04-05 16:00:32

1

您可以在代碼的一行或兩行做到這一點:

rNo <- as.integer(rownames(patchList[which(patchListTop5$sensitivity == patchLocalSpec),])) 
patchLocalNo <- cbind(patchLocalNo[rNames,], rNo)