いくつかの列を持つdataframe(df)があり、その一部にはカテゴリデータが含まれ、その他には数値データが含まれています。列'd'の値を、2つの列('a'と'b')(1つはカテゴリデータ、もう1つは数値データ)の値の組み合わせとして定義したいと思います。
たとえば、列'a'の行1にはカテゴリデータ値'h'があり、列'b'の行1には数値データ値'76'があります。列'd'の行1に値'h76'を持たせたい
どんな助けでも大歓迎です。
dfrm$d <- apply(dfrm, 1, paste0)
一部の数値列の小数表現が長い場合、これは不十分な結果をもたらす可能性があります。再現可能な例を実際に投稿する必要があります。質問を編集し、の出力を挿入するのが最適ですdput(head(datfrm))
。
このような:
df$d <- paste0(df$a, df$b)
あまりにも多くの人に会いたくない人がいる場合は、次のdf$
こともできます。
df <- transform(df, d <- paste0(a, b))
あなたはこれを試すかもしれません。
mydatf$d <- factor(mydatf$a):factor(mydatf$b)
例えば
a <- c('h','l','l','h','h')
b <- 1:5
factor(a):factor(b)
1] h:1 l:2 l:3 h:4 h:5
Levels: h:1 h:2 h:3 h:4 h:5 l:1 l:2 l:3 l:4 l:5
これは、文字変数ではなく因子を必然的に生成するという点で、他の回答とは大きく異なります。:
また、後で数式をモデリングする際に行うことの一部についての紹介でもあります。たとえば、変数のレベルに注意してください。この新しい変数の目的に応じて、これが最良の答えになる場合もあれば、ひどい答えになる場合もあります。また、列a
がすでに要素である場合は、に変更できfactor(mydatf$a)
ますdatf$a
。これは、data.frame
オブジェクトの場合によくあります。
ジョンは、それが彼の答えと非常に関連しているにもかかわらず、これを別の答えとして入力するように私を説得しました。
interaction(test$a, test$b, drop=TRUE, sep="", lex.order=TRUE)
これにより、次と同じ値が返されます。
factor(paste0(test$a, test$b))
(test $ aが順序付けされていない場合、ファクターレベルも同じ順序になると思います。)
通常、係数の使用は文字よりも優先されます(常にではありません)。