9

次のようにするdata.frameとします。

a <- data.frame(id=c(1,3,4,5,7,8,9,6,54,3,5,6,87,6))

そして、私は次のようなベクトルを持ってtempいます:

temp<-c(1,3,5,9)

flagここで、data.frame に新しい列を作成したいと思います。1どこにidあるのかtemp、どこにあるの0か。これは私が試したものです:

a$flag <- ifelse(a$id==temp, 1, 0)

目的の出力は である必要があります(1,1,0,1,0,0,1,0,0,1,1,0,0,0)

しかし、上記のコードから、flag適切に更新されていません。ここで何が欠けていますか?使用できます%in%か? もしそうなら、どのように?

助けてくれてありがとう

4

2 に答える 2

6

これがあなたが探しているものだと思います。の作成方法にはいくつかの問題がありますdata.frame

a <- data.frame(id = c(1,3,4,5,7,8,9,6,54,3,5,6,87,6),
                flag = 0)

次に、 の値flagを 1に更新するにidは、 と論理テストtempを使用してこれらの値にインデックスを付け、それらに 1 を割り当てます。[%in%

a$flag[a$id %in% temp] <- 1

a
#    id flag
# 1   1    1
# 2   3    1
# 3   4    0
# 4   5    1
# 5   7    0
# 6   8    0
# 7   9    1
# 8   6    0
# 9  54    0
# 10  3    1
# 11  5    1
# 12  6    0
# 13 87    0
# 14  6    0
于 2013-07-01T23:10:48.653 に答える