0
列にある3つの可能な値のいずれかに基づいて新しい列を作成する必要があります。R新しい列に値を割り当てるロジックがある場合
これらはルールです:
If it has c somewhere in it, the new column should be assigned "third"
If it has b, but not c somewhere in it, the new column should be assigned "second"
If it has a but not b or c somewhere in it, the new column should be assigned "first"
ここに私のサンプルコードは
x <- c('a,b,c', 'a', 'a,b')
myLetters <- data.frame(x)
setnames(myLetters, "theLetter")
sapply(myLetters$, theLetter, function(x)
if ('c' %in% myLetters$theLetter) {
myLetters$letterStatus <- "third"
} else if ('b' %in% myLetters$theLetter) {
myLetters$letterStatus <- "second"
} else if ('a' %in% myLetters$theLetter) {
myLetters$letterStatus <- "first"
}
)
だこれは私がmyLetters $ letterStatusのためのサンプルデータに基づいて、行ごとに必要なデータです。
Row 1: third
Row 2: first
Row 3: second
現在、私は「最初の」「最初の」「最初の」「最初の」ものを取得していますが、理由はわかりません。
私はこれをどのように解決することができ、なぜ私は各行の最初の理由を知っていますか?
おかげで結果を得るために、ベクトル化(私たちにRの贈り物)を使用して
おかげで、それがあれば、他の代わりifelseの使用sapplyコードよりもうまくかつ簡単に働きました。 – Jazzmine
私は、フォローアップの質問があります:myLetters $ x1の列名を設定するにはどうすればいいですか? View(myLetters $ x1)の名前は、このコマンド(names(myLetters $ letterRating))で示されているように実際にはNullですが、c(3,1,2)のように解析された値のセットです。列の名前は?私はこのリンクを参照してくださいhttp://stackoverflow.com/questions/16030728/how-to-name-the-unnamed-first-column-of-a-data-frameしかし、名前を割り当てるだけですありがとう – Jazzmine
実際には、私は自分の環境をリフレッシュした後にうまくいきました。ありがとう – Jazzmine