Добавление префикса только к определенным строкам в фрейме данных R - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть фрейм данных Fold_change со столбцом с именем Well с 576 переменными с именами A1, A2 ... и так далее.Я хотел бы добавить префикс Plate_1_ к первым 288 и префикс Plate_2_ к остальным переменным.

Я оглянулся и нашел это возможное решение

Fold_change$Well <- paste0('Plate_1_', Fold_change$Well)

Но проблема здесь в том, что имя меняется на все переменные

Поэтому я попытался указать количество строк:

Fold_change$Well[1:288] <- paste0('Plate_1_', Fold_change$Well[1:288])

, но я получаю эту ошибку

Предупреждающее сообщение: In [<-.factor (*tmp*, 1: 288, значение = c (NA, NA, NA, NA, NA, NA,: недопустимый уровень коэффициента, сгенерировано NA

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Попробуйте сначала преобразовать столбец Well в строку.Затем выполните манипуляцию и при необходимости конвертируйте ее обратно в множитель.

Fold_change$Well <- as.character(Fold_change$Well)
Fold_change$Well[1:288] <- paste0('Plate_1_', Fold_change$Well[1:288])
# anithing else
Fold_change$Well <- as.factor(Fold_change$Well)
0 голосов
/ 17 сентября 2018

Вот возможное решение, просто измените значения номера строки:

dat <- data.frame(
  col_a = paste0("A", 1:10)
)
dat #fake data, just 10 rows
# col_a
# 1     A1
# 2     A2
# 3     A3
# 4     A4
# 5     A5
# 6     A6
# 7     A7
# 8     A8
# 9     A9
# 10    A10

Мы можем использовать paste0 для изменения значений.А с помощью gsub мы можем найти новый шаблон и обновить его только для нужных нам строк (в примере с 5 по 10).

dat$col_a <- paste0("Plate_1_", dat$col_a) #changes names for all
dat$col_a[5:length(dat$col_a)] <- gsub("Plate_1_", "Plate_2_",dat$col_a[5:length(dat$col_a)]) 
#updates only for last 6 values
dat
# col_a
# 1  Plate_1_A1
# 2  Plate_1_A2
# 3  Plate_1_A3
# 4  Plate_1_A4
# 5  Plate_2_A1
# 6  Plate_2_A2
# 7  Plate_2_A3
# 8  Plate_2_A4
# 9  Plate_2_A5
# 10 Plate_2_A6
0 голосов
/ 17 сентября 2018

Попробуйте:

Fold_change$Well <- as.character(Fold_change$Well) # change column class from factor to character first
Fold_change$Well[1:288] <- paste0('Plate_1_', Fold_change$Well[1:288])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...