2013-05-11 85 views
0

我有一個看起來像這樣的數據:當子集或刪除行只刪除一個列的值

name age profit 
Ann  -3  10 
Ann  -2  5 
Ann  1  23 
Ann  2  15 
Josh -2  12 
Josh -1  34 
Josh  0  1 
Josh  1  21 
Josh  2  26 

我想刪除那些行age爲負。 使用

subset(profitData,age>0,select=c(name,age,profit)) 

後,我得到這個:

name age profit 
Ann  1  10 
Ann  2  5 
Ann  3  23 
Ann  4  15 
Josh 1  12 
Josh 2  34 
Josh 3  1 
Josh 4  21 
Josh 5  26 

因此,只有從年齡列中的值被刪除,但不是整個行。 有什麼建議嗎?

+1

'profitData [profitData $ age> = 0,''''''''''' – RoyalTS 2013-05-11 03:28:18

+0

看起來很奇怪。您應該(一如既往)發佈'dput(profitData)' – 2013-05-11 03:42:59

回答

1

看起來這將是確定:

profitData[profitData$age>0,] 
0

要回答你的特定子集的問題...

有準備的東西hinky。我運行你的代碼並得到你想要的輸出。開始一個乾淨的會議可能:

profitData <- read.table(text="name age profit 
Ann  -3  10 
Ann  -2  5 
Ann  1  23 
Ann  2  15 
Josh -2  12 
Josh -1  34 
Josh  0  1 
Josh  1  21 
Josh  2  26", header=T) 

subset(profitData,age>0,select=c(name,age,profit)) 

## > subset(profitData,age>0,select=c(name,age,profit)) 
## name age profit 
## 3 Ann 1  23 
## 4 Ann 2  15 
## 8 Josh 1  21 
## 9 Josh 2  26 
+0

請求的輸出爲非負數,爲0負數? – Marichyasana 2013-05-11 09:38:55

+0

這個要求真的不是關於如何子集,海報似乎明白這一點。這更是爲什麼他們所期望的子集化不起作用。這個問題對於海報來說不是0,這是一個用'<0'代替'> 0'的簡單行爲;海報擔心所述值被替換而不是子集。 – 2013-05-11 12:50:58