2017-08-28 70 views
1

我想为数据框中的所有“未知”字符串添加计数器。 下面是数据帧将增量计数器添加到数据帧的行中的字符串

structure(list(Phylum = structure(c(1L, 2L, 2L, 2L, 2L, 2L), .Label = c("Acidobacteria", 
"Actinobacteria"), class = "factor"), Class = structure(c(1L, 
2L, 2L, 2L, 2L, 2L), .Label = c("Acidobacteria bacterium RIFCSPLOWO2_02_FULL_64_15", 
"Actinobacteria"), class = "factor"), Order = structure(c(3L, 
1L, 2L, 2L, 2L, 2L), .Label = c("Actinomycetales", "Corynebacteriales", 
"unknown"), class = "factor"), Family = structure(c(3L, 1L, 2L, 
2L, 2L, 2L), .Label = c("Actinomycetaceae", "Corynebacteriaceae", 
"unknown"), class = "factor"), Genus = structure(c(3L, 2L, 1L, 
1L, 1L, 1L), .Label = c("Corynebacterium", "Trueperella", "unknown" 
), class = "factor"), Species = structure(c(1L, 1L, 1L, 1L, 1L, 
1L), .Label = "unknown", class = "factor"), Genecoverage = c(5.58715596330275, 
761.405303030303, 42.5656565656566, 91.910447761194, 63.1912223121422, 
87.9927983539095)), .Names = c("Phylum", "Class", "Order", "Family", 
"Genus", "Species", "Genecoverage"), row.names = c(NA, 6L), class = "data.frame") 

第一行我想用“unknown_1”全部替换“未知”的出现次数。
对于第二行用“unknown_2”替换所有“未知”发生,依此类推......

你能帮忙吗?

感谢

+2

如何尝试'make.unique(如。字符(df1 $物种))或所有列df1 [] < - lapply(df1,函数(x)替换(as.character(x),x ==“未知”,paste0(x [x ==“未知“],seq_len(sum(x ==”unknown“)))))' – akrun

+0

”unknown“字符串可以位于任何列中,而不仅仅是物种之一。 – david

+0

这就是我更新我之前的评论的原因。请检查它 – akrun

回答

1

我们可以子集非数字列和replace非数值列“未知”通过paste与序列荷兰国际集团重视

i1 <- !sapply(df1, is.numeric) 
df1[i1] <- lapply(df1[i1], function(x) factor(replace(as.character(x), 
    x == "unknown", paste0(x[x=="unknown"], seq_len(sum(x == "unknown")))))) 
df1 
#   Phylum            Class    Order    Family   Genus Species Genecoverage 
#1 Acidobacteria Acidobacteria bacterium RIFCSPLOWO2_02_FULL_64_15   unknown1   unknown1  unknown1 unknown1  5.587156 
#2 Actinobacteria         Actinobacteria Actinomycetales Actinomycetaceae  Trueperella unknown2 761.405303 
#3 Actinobacteria         Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium unknown3 42.565657 
#4 Actinobacteria         Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium unknown4 91.910448 
#5 Actinobacteria         Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium unknown5 63.191222 
#6 Actinobacteria         Actinobacteria Corynebacteriales Corynebacteriaceae Corynebacterium unknown6 87.992798