別の列の特定の条件に一致する新しい列の行に定数を追加したいと思います。
私のシミュレーションデータ:
df <- structure(list(var1 = c("a", "b", "c", "a", "a", "a", "a", "d"),
var2 = c("b", "b", "a", "b", "b", "c", "a", "c"),
var2 = c("c", "c", "c", "c", "d", "c", "c", "a")),
.Names = c("var1", "var2", "var3"),
row.names = c(NA, 8L),
class = "data.frame")
これは次のようになります:
> df
var1 var2 var3
1 a b c
2 b b c
3 c a c
4 a b c
5 a b d
6 a c c
7 a a c
8 d c a
今、私は追加したいnewvar
場合は1の値によって増加するvar1
等号をa
、場合により1さらにそれを増やしvar2
等号b
とあれば1で、さらにそれを高めるvar3
等号c
。つまり、私のデータは次のようになります。
> df
var1 var2 var3 newvar
1 a b c 3
2 b b c 2
3 c a c 1
4 a b c 3
5 a b d 2
6 a c c 2
7 a a c 2
8 d c a 0
私は以下を試しましたが、値を1に置き換えるだけで、1ずつ増やすことはありません。
df$newvar[df$var1 == "a"] <- +1
df$newvar[df$var1 == "b"] <- +1
df$newvar[df$var1 == "c"] <- +1
を使用rowwise
してdplyr
、各行で満たされる条件の数を数えることができます。
library(dplyr)
df %>%
rowwise() %>%
mutate(new_var = sum(c(var1 == "a", var2 == "b" , var3 == "c")))
# var1 var2 var3 new_var
# <chr> <chr> <chr> <int>
#1 a b c 3
#2 b b c 2
#3 c a c 1
#4 a b c 3
#5 a b d 2
#6 a c c 2
#7 a a c 2
#8 d c a 0
またはベースRメソッド
df$new_var <- Reduce("+", list(df$var1 == "a", df$var2 == "b", df$var3 == "c"))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加