2012-09-08 32 views
0

一列值我有一個數據集,看起來像這樣:如何更換R中

A B C D 
1. 5 4 4 4 
2. 5 4 4 4 
3. 5 4 4 4 
4. 5 4 4 4 
5. 5 4 4 4 
6. 5 4 4 4 
7. 5 4 4 4 

我想要一個「零」,在C列添加到所有變量例如,像這樣的:

A B C D 
1. 5 4 40 4 
2. 5 4 40 4 
3. 5 4 40 4 
4. 5 4 40 4 
5. 5 4 40 4 
6. 5 4 40 4 
7. 5 4 40 4 

我該怎麼做?

+5

至於你的問題變得越來越複雜,你可能會開始生產的思考一個可重複的例子。看看如何使一個在這裏:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

回答

4

由10只是乘C列假設您的data.frame被稱爲myData

myData$C <- myData$C*10 
+0

哦!疑難雜症!謝謝!! :-) –

+3

@Rnewbie,如果(且僅當)答案滿足您的需求,請務必將其標記爲已接受。 – A5C1D2H2I1M1N2O1R2T1

+2

...使用綠色刻度標記。 –

4

我真的不喜歡經常不得不參考myData$A來引用A列。一個不錯的選擇表達式是使用within

myData = within(myData, { 
    C = C * 10 
    D = D + 4 
    E = C + D 
}) 

尤其是當多個列的操作需要在同一個data.frame我喜歡這種語法更好的工作要做。甚至更好:

myData = transform(myData, C = C * 10, D = D + 4, E = C + D) 

或使用mutateplyr包。這個擁有超過transform,它的作品反覆,讓您使用新創建的列的優點是:如果你的數據是數字

# fails 
myData = transform(myData, C = C * 10, new_col = C + 4, even_newer = new * 3) 
#works 
myData = mutate(myData, C = C * 10, new_col = C + 4, even_newer = new * 3) 
+0

'內'是絕對有用的。 – A5C1D2H2I1M1N2O1R2T1

2

,mrdwab的建議是最好的:

myData的$ C < - myData的$ C * 10

此樣式適用於「data.frame」。所以,如果你把你的數據在一個矩陣,你應該使用:

myData的[3] = MYDATA的[3] * 10

最後,如果你的數據不是數字(字符),你可以按照以下動作:

MYDATA的$ C =膏(MYDATA的$ C, 「0」,九月​​= 「」)