2016-05-16 10 views
1

(i)15,000未満のすべての値と(ii)2列の各行の最大値を含む複数の条件に基づいて値を割り当てたいとします。これまで私は、新しい変数を作成し、最初の条件を満たす行に "5000"を割り当てる次のコードを持っています。2つの列の最大値に基づく条件付き値の割り当て

df$new.variable[all.premises < 15000] <- "5000" 

どのように私は、最高値が(施設< 2K &施設> 2Kと呼ばれる)他の二つの変数間であるうまくいく第二の条件を組み込むのですか? 、私はwhich.maxがここで使用のかもしれないと思う

Postcode all.premises premises<2k premises>2k 
AB1 123  24000   18000   6000 
AB2 124  30000   22000   8000 
AB3 125  12000   4000   8000 
AB4 126  24000   18000   6000 

ようなものになる可能性がある場合には:ここではデータ構造です

    :二つの条件を要約すると

    df$new.variable[all.premises < 15000 & which.max(premises<2k, premises>2k)] <- "5000" 
    

  • 私はすべてのプリミティブを使用して、ある特定の数を超える、またはある特定の数の施設を持つ行に異なる値を割り当てたい(これはまっすぐです)
  • 私はまたすべてに行きたい私はなぜか、どのようにあなたがしたいように確認していない
+0

したがって、2番目の条件の結果はどうなりますか?それは完全に明確ではありません – Sotos

+0

私はその条件にも基づいて "5000"を割り当てたいので、 'df $ new.variable [all.premises <15000&which.max(premises <2k、premises> 2k)]> - "5000" ' –

答えて

0

(施設< 2Kと施設> 2Kを訴えて)特定の場所から多かれ少なかれ2キロ、その後のいずれかの施設の大部分を持っているそれらの行に異なる値をocateこれらの条件に基づいて新しい変数を作成しますが、値を置き換えることができる次の2つのステップを適用します。

df$all.premises[df$all.premises < 15000] <- 5000 
df[3:4] <- t(apply(df[3:4], 1, function(i) replace(i, which.max(i), 5000))) 
df 
# Postcode all.premises premises.2k premises.2k.1 
#1 AB1 123  24000  5000   6000 
#2 AB2 124  30000  5000   8000 
#3 AB3 125   5000  4000   5000 
#4 AB4 126  24000  5000   6000 
+1

これは感謝しました。 2行目のコードを使用して値を割り当て、その値に一致する行をサブセット化することができました。括弧の前の2行目で 't'はどういう意味ですか? –

+0

't'は' apply'の出力を転置するためのものです。 [この質問](http://stackoverflow.com/questions/9521260/why-apply-returns-a-transposed-xts-matrix)なぜ私たちはそれを転置する必要があるかについてより内部を与えるでしょう。 – Sotos

関連する問題