Отредактировано Меня запутали названия столбцов, извините. Это работает.
Если вы не возражаете против строк, заканчивающихся в разных порядках, это своего рода «милый» способ сделать это:
dat <- read.table(textConnection("V1 V2 V3
1 a 2
2 a 3
4 b 1"),sep = "",header = TRUE)
tmp <- dat[dat$V2 == 'b',3:1]
colnames(tmp) <- colnames(dat)
rbind(dat[dat$V2 != 'b',],tmp)
По сути, это просто захват строк, где V2 == 'b'
, переворачивает столбцы и объединяет их вместе со всем остальным. Это может быть расширено, если у вас есть больше столбцов, которые не нуждаются в переключении; вы бы просто использовали целочисленный индекс с этими транспонированными значениями, а не просто 3:1
.