2017-08-15 13 views
2

Rに以下のようなデータセットがあります。説明列の空のセルを値の列の値が「0」の場合に更新しようとしています。別の列の行に基づいて列の行を更新するR

Criteria  Value Description 
Success  0          
Success  21  look up 
Success  20  repeat 
Success  19  What is this 
Success  18  Transition 
Success  17  Program 
Success  0    

私はこれを解決するために何か助けていただきたいと思います。私が取得しようとしています出力は以下のとおりである:

Criteria  Value Description 
Success  0  TEST        
Success  21  look up 
Success  20  repeat 
Success  19  What is this 
Success  18  Transition 
Success  17  Program 
Success  0  TEST 

おかげで、

+1

何を記入したいですか? 'dput(yourdataframe)'の出力も提供します。あなたの質問の質を向上させるために、[Rで素晴らしい再生可能サンプルを作る方法](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)をお読みください。 – Masoud

+3

mydf $説明[mydf $値== 0] < - "テスト" –

+0

@マサウド:リンクを共有してくれてありがとう。これは良い記事です。入力を受け取り、私の質問を再現性があるように再構成します。 – Sree

答えて

1

は、いくつかのオプションがある:

基本R - オプション1

mydf$Description[mydf$Value == 0] <- "TEST" 

基本R - オプション2

mydf$Description <- if.else(mydf$Value == 0, "TEST", mydf$Description) 

dplyr - if_else()

library("dplyr") 
mydf <- mydf %>% mutate(Description = if_else(Value == 0, "TEST", Description)) 

dplyr - case_when()

便利なif文の数を評価する必要があります。

library("dplyr") 
mydf <- mydf %>% mutate(
    Description = case_when(
    Value == 0 ~ "TEST", 
    TRUE ~ Description 
    ) 
) 
+0

ありがとう多く。彼らは私のケースでは "要因"だったので、私は説明といくつかの問題を抱えていた。これを使用する前に、それらを文字に変換しなければなりませんでした。複数のソリューションを評価してください。 – Sree

1

はifelse()ステートメントを使用することができます。

データフレームを「データセット」とすると、ifelse()文を使用して値の列を0にチェックすることができます。値が0の場合は、説明列に値「TEST」を入力します。それが0でなければ(else)、それは単に列にすでにある値を入力するだけです。

dataset$Description <- ifelse(dataset$Value == 0, 
           "TEST" , 
           dataset$Description) 
+0

'ifelse'は静かな非効率です、多分' dataset $ Value == 0 '=' Test 'または 'dataset $ Description [dataset $ Value%in%0] =' Test'' – Wen

関連する問題