2013-03-20 59 views
0

对于格式化为如此的数据,我想将某些f值更改为j,将j值更改为f以获得某些C值(例如,当c是6 7 2我想在A列交换j表示f和反之亦然交换某些行的列值

 A B   C  
     f 2   2 
     f 2   6 
     j 2   7 
     j 3   3 
     j 3   4 
     f 3   8 
     j 2   2 
     j 2   6 
     f 2   7 
     f 3   3 
     f 3   4 
     j 3   8 
+1

虽然包含示例数据是一个很好的开始,但Stack溢出不应该为我编写“我的代码”资源。请张贴您的(失败)尝试 – mnel 2013-03-20 02:46:36

+0

对不起,我不知道从哪里开始。我会花更长的时间尝试未来发布之前,有点绝望。 – luke123 2013-03-20 03:05:45

+1

在这种情况下,Stackoverflow上的一个问题应该*不是你的第一个端口。 – mnel 2013-03-20 03:10:29

回答

1

也许这样的事情

DF <- read.table(textConnection('A B   C  
    f 2   2 
    f 2   6 
    j 2   7 
    j 3   3 
    j 3   4 
    f 3   8 
    j 2   2 
    j 2   6 
    f 2   7 
    f 3   3 
    f 3   4 
    j 3   8'), header=TRUE, stringsAsFactors = FALSE) 

DF 
## A B C 
## 1 f 2 2 
## 2 f 2 6 
## 3 j 2 7 
## 4 j 3 3 
## 5 j 3 4 
## 6 f 3 8 
## 7 j 2 2 
## 8 j 2 6 
## 9 f 2 7 
## 10 f 3 3 
## 11 f 3 4 
## 12 j 3 8 


DF[DF$C %in% c(6, 7, 2), "A"] <- ifelse(DF[DF$C %in% c(6, 7, 2), "A"] == "f", "j", "f") 

DF 
## A B C 
## 1 j 2 2 
## 2 j 2 6 
## 3 f 2 7 
## 4 j 3 3 
## 5 j 3 4 
## 6 f 3 8 
## 7 f 2 2 
## 8 f 2 6 
## 9 j 2 7 
## 10 f 3 3 
## 11 f 3 4 
## 12 j 3 8 
1

好像它欺骗:

x[x$C %in% c(6,7,2),'A'] <- levels(x$A)[3 - as.numeric(x[x$C %in% c(6,7,2),'A'])] 

> x 
## A B C 
## 1 j 2 2 
## 2 j 2 6 
## 3 f 2 7 
## 4 j 3 3 
## 5 j 3 4 
## 6 f 3 8 
## 7 f 2 2 
## 8 f 2 6 
## 9 j 2 7 
## 10 f 3 3 
## 11 f 3 4 
## 12 j 3 8