2017-08-28 64 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