如何替换R中的单个列值

时间:2012-09-08 04:12:45

标签: r variables

我有一个如下所示的数据集:

   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

我该怎么做?

3 个答案:

答案 0 :(得分:4)

将C列乘以10.假设您的data.frame被称为myData

myData$C <- myData$C*10

答案 1 :(得分: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)

或使用mutate包中的plyr。这比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)

答案 2 :(得分:2)

如果您的数据是数字,那么mrdwab的建议是最好的:

  

myData $ C&lt; - myData $ C * 10

此样式适用于“data.frame”。因此,如果您将数据保存在矩阵中,则应使用:

  

myData [,3] = myData [,3] * 10

最后,如果您的数据不是NUMERIC(字符),则可以按以下方式操作:

  

myData $ C = paste(myData $ C,“0”,sep =“”)