仅在数据帧R中的特定行添加前缀

问题描述 投票:0回答:3

我有一个数据框Fold_change,其中一个名为Well的列有576个变量,名为A1A2 ......等等。我想将前缀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])

但是我收到了这个错误

警告信息:在[<-.factor*tmp*,1:288,value = c(NA,NA,NA,NA,NA,NA,:无效因子水平,NA生成)

r dataframe
3个回答
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])

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)

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
© www.soinside.com 2019 - 2024. All rights reserved.