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
4

2 回答 2

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
于 2013-03-20T02:42:41.547 回答
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
于 2013-03-20T02:54:33.660 回答