に3つのカテゴリを組み合わせる:Ifelse:このdata.frameを使用して1
df <- read.table(text = c("
ID cat1 cat2 cat3
site1 High High High
site1 High High Medium
site1 High High Low
site1 High Medium High
site1 High Medium Medium
site1 High Medium Low
site1 High Low High
site1 High Low Medium
site1 High Low Low
site1 Medium High High
site1 Medium High Medium
site1 Medium High Low
site1 Medium Medium High
site1 Medium Medium Medium
site1 Medium Medium Low
site1 Medium Low High
site1 Medium Low Medium
site1 Medium Low Low
site1 Low High High
site1 Low High Medium
site1 Low High Low
site1 Low Medium High
site1 Low Medium Medium
site1 Low Medium Low
site1 Low Low High
site1 Low Low Medium
site1 Low Low Low
"), header =T)
私はcat1
、cat2
とcat3
に基づいてnew_category
と呼ばれる新しい列を作成します。
new_category
の各行にcat1
、cat2
、cat3
という共通クラス "or"を使用したいとします。すべての値が異なる場合(高、中、低)、new_category
は最高クラス(この場合はHigh
)になります。例えば
次いで
cat1 = High
場合、cat2 = High
、cat3= Medium
、次いでnew_category = High
cat1 = High
場合、cat2 = Medium
、cat3= Low
、次いでnew_category = High
cat1 = Medium
場合、cat2 = Medium
、cat3= Low
、new_category = Medium
ifelse
を使用してこれを行うことができます。しかし、cat1
とcat2
とcat3
の組み合わせが多数あります。
これを行うためのより簡単なやり方はありますか?
完璧:-)あなたの時間と助けをたくさんありがとう – aelwan
あなたは大歓迎です。また、「最小」と「最大」は通常の要素に適用できないが、順序付けされた要素に適用できることも知った。 :) – mt1022
私はここにそれを追加します、それはまったく同じアイデアです - 異なる機能。テーブル化と行による 'which.max'を避けるために、代わりに、表を表にして' max.col'を使用する方法があります。そして、長さ> 1のベクトルで作業しているので、 'ifelse'を使用してください。私。 'tab = table(行(df [-1])、as.matrix(df [-1])); ifelse(rowSums(tab!= 0)== 3、 "High"、colnames(tab)[max.col(tab、 "first")]) ' –