2013-03-20 65 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