2017-04-25 4 views
1

これはおそらく何度も尋ねられていますが、私よりも複雑なケースしか見つけられません。私は私のデータフレームに新しい列(Condition)を追加し、cellNrR:別の列の行を照合して列の行を入力してください

マイデータフレームがmolten.pCある列の値に応じて行を埋める必要があります。

cellNr  value 
1 G63 0.000000 
2 G64 8.848623 
3 G65 0.000000 
4 G66 10.788718 
5 B15 5.285402 
6 B16 0.000000 
7 B17 0.000000 
8 C10 0.000000 
9 C11 0.000000 

は、私が列を追加したいConditionそして、このようにそれを埋める:

cellNr  value  Condition 
1 G63 0.000000 Growth 
2 G64 8.848623 Growth 
3 G65 0.000000 Growth 
4 G66 10.788718 Growth 
5 B15 5.285402 Burst 
6 B16 0.000000 Burst 
7 B17 0.000000 Burst 
8 C10 0.000000 Cellularized 
9 C11 0.000000 Cellularized 

答えて

2

私たちは、最初の文字(substr)を抽出してbase Rでこれを行うでfactorに変換することができますおよびlevelsが指定されています。

molten.pC$Condition <- as.character(factor(substr(molten.pC$cellNr, 1, 1), 
     levels = c("G", "B", "C"), labels = c("Growth", "Burst", "Cellularized"))) 
molten.pC$Condition 
#[1] "Growth"  "Growth"  "Growth"  "Growth"  "Burst" 
#[6] "Burst"  "Burst"  "Cellularized" "Cellularized" 

それとも私たちは、上記の溶液に私の考えを追加するdplyr

library(dplyr) #devel version (soon to be released `0.6.0`) 
molten.pC %>% 
     mutate(Sub = substr(cellNr, 1, 1), 
      Condition = case_when(Sub=="G" ~"Growth", 
            Sub == "B" ~"Burst", 
          TRUE ~"Cellularized")) %>% 
     select(-Sub) 
# cellNr  value Condition 
#1 G63 0.000000  Growth 
#2 G64 8.848623  Growth 
#3 G65 0.000000  Growth 
#4 G66 10.788718  Growth 
#5 B15 5.285402  Burst 
#6 B16 0.000000  Burst 
#7 B17 0.000000  Burst 
#8 C10 0.000000 Cellularized 
#9 C11 0.000000 Cellularized 
+1

からcase_whenを使用することができます。 molten.pC $条件< - 因子(molten.pC $条件、レベル= labels = sort(c( "Growth"、 "Burst"、 "Cellularized"))) –

+1

驚くばかり!ありがとう!! – Jon

関連する問題