3

愚かな例 df, "cat":

species color tail_length
calico  brown     6
calico  gray      6
tabby   multi     5
tabby   brown     5

新しい変数であるパー​​ソナリティを作成したいとします。ここでの値は、tail_length に基づいて再コード化されますが、猫の種と色にも依存します。したがって、理想的な最終的な df は次のようになります。

species color tail_length personality
calico  brown     6          mean
calico  gray      6          nice
tabby   multi     5          mean
tabby   brown     5          nice

現在、私はコードを使用しています:

library(car)
cat$personality<-recode(cat$tail_length, "'6'==mean, '5'==nice")
cat$personality[cat$species=="calico" & cat$color=="brown"] <- mean
cat$personality[cat$species=="calico" & cat$color=="gray"] <- nice
cat$personality[cat$species=="tabby" & cat$color=="multi"]<- mean
cat$personality[cat$species=="tabby" & cat$color=="brown"]<-nice

私の主な質問はこれです:これを行う/これらの機能を1つに統合するより簡単な方法はありますか? この例のデータをその場で作成したことを考えると、回答するときは塩の粒で受け取ってください。ありがとう!Rの初心者として、私はあなたの助けに本当に感謝しています.

4

3 に答える 3

0

ここでできることはあまりありません。結局のところ、割り当てる条件と新しい変数を指定する必要があるからです。

ただし、次を使用して定型コードを削減できますwithin

within(cat, {
  personality <- recode(tail_length, "'6'==mean, '5'==nice")
  personality[species == "calico" & color == "brown"] <- "mean"
  personality[species=="calico" & color=="gray"] <- "nice"
  personality[species=="tabby" & color=="multi"] <- "mean"
  personality[species=="tabby" & color=="brown"] <- "nice"
})
于 2015-03-06T01:47:23.743 に答える
0

これは本当にただのmerge操作です。(さらに、基準を過剰に指定してspeciesおりtail_length、完全に依存しています。ただし、問題にならない例にすぎないためです。)最初のデータフレームがdatで、基準データフレームがlookup. その後、あなたがする必要があるのは次のとおりです。

> merge(dat, lookup)
  species color tail_length personality
1  calico brown           6        mean
2  calico  gray           6        nice
3   tabby brown           5        nice
4   tabby multi           5        mean

データフレームと同じように見えるため、非常に興味深い結果でも劇的な結果でもありませんlookupが、少し大きくして、次のようにします。

> merge( rbind(dat,dat,dat) , lookup)
   species color tail_length personality
1   calico brown           6        mean
2   calico brown           6        mean
3   calico brown           6        mean
4   calico  gray           6        nice
5   calico  gray           6        nice
6   calico  gray           6        nice
7    tabby brown           5        nice
8    tabby brown           5        nice
9    tabby brown           5        nice
10   tabby multi           5        mean
11   tabby multi           5        mean
12   tabby multi           5        mean
于 2015-03-06T04:38:40.143 に答える