对于这样格式化的数据,我希望将某些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
答案 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