Reputation: 641
With data formatted like so I want to change certain f values to j and j values to f for certain values of C, e.g. when c is 6 7 or 2 I want to swap j for f and vice versa in column 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
Upvotes: 0
Views: 840
Reputation: 42689
Seems like it's cheating:
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
Upvotes: 1
Reputation: 17189
Perhaps something like this
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
Upvotes: 1