仅向数据框R中的特定行添加前缀

时间:2018-09-17 09:52:07

标签: r dataframe

我有一个数据框Fold_change,其列名为Well,其中包含576个变量,分别名为A1A2 ...等。 我想在前288个变量中添加前缀Plate_1_,并在其余变量中添加前缀Plate_2_

我环顾四周,找到了可能的解决方案

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

但是这里的问题是将名称更改为所有变量

所以我尝试指定行数:

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

但我收到此错误

  

警告消息:在[<-.factor*tmp*中,1:288中,值= c(NA,NA,NA,   NA,NA,NA ,:无效的因子水平,生成的NA

3 个答案:

答案 0 :(得分:1)

尝试:

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])

答案 1 :(得分:0)

尝试首先将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)

答案 2 :(得分:0)

这是一个可能的解决方案,只需更改行号值:

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