我正在处理一个数据框,我需要在其中编辑一个特定列中的条目以便于排序。导入时数据框如下所示:
Assay Genotype Description Sample Operator
1 CCT6-18 C A.Conservative 1_062911 Automatic
2 CCT6-24 C E.User Call 1_062911 charles
3 CCT6-25 A A.Conservative 1_062911 Automatic
我需要将测定柱从CCT6-18更改为CCT6-018。这个“化验”在数据框中出现多次,我想一次更改所有条目。我尝试过gsub函数,但它以我不熟悉的格式返回数据。我想在数据框中恢复数据。
帮助!
答案 0 :(得分:6)
df$Assay <- replace(df$Assay, df$Assay=="CCT6-18", "CCT6-018")
应该看对你。
另外,请尝试str(df)
或class(df$Assay)
查看您的Assay专栏是哪一课。如果这是一个因素,这可能是你被绊倒的原因。如果是,请先运行df$Assay <- as.character(df$Assay)
。
答案 1 :(得分:4)
这取决于您是否还要更改Assay
中的其他条目。一种简单的方法就是在短划线后添加0
:
df$Assay <- gsub('-', '-0', df$Assay)
正则表达式解决方案将是:
df$Assay <- gsub('(\\d\\d)','0\\1', df$Assay)
这将用0
替换任意两位数后跟相同的两位数。你必须小心regexp,因为你必须很好地了解你的数据,以确保你不会错误地改变任何东西。例如,如果CCT62-18
中有Assay
作为条目,则您不希望使用此正则表达式,因为它会将62更改为062。
答案 2 :(得分:1)
我会通过替换因子水平来实现。
sam <- data.frame(assay = c("CCT6-18", "CCT6-23", "CCT6-25"),
genetype = sample(letters, 3), operator = runif(3), sample = runif(3))
str(sam)
'data.frame': 3 obs. of 4 variables:
$ assay : Factor w/ 3 levels "CCT6-18","CCT6-23",..: 1 2 3
$ genetype: Factor w/ 3 levels "f","u","w": 1 2 3
$ operator: num 0.595 0.912 0.76
$ sample : num 0.525 0.626 0.377
levels(sam$assay)[1] <- "CCT6-018"
sam
assay genetype operator sample
1 CCT6-018 f 0.5950434 0.5249502
2 CCT6-23 u 0.9123185 0.6257186
3 CCT6-25 w 0.7595744 0.3769029