交换某些行的列值

时间:2013-03-20 02:35:33

标签: r

对于这样格式化的数据,我希望将某些f值更改为j,并且对于某些C值,将j值更改为f,例如当c为6 7或2时,我想将j替换为f,反之亦然,在A列中。

      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

2 个答案:

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