0

したがって、多数の変数を含む非常に大きな (機密のため、あいまいな名前の) データ セットがあり、関連するものgroupを と と呼びましょうdummy1。私がやりたいことは、新しい変数 を作成することです。これは、 の同じ値を持つ少なくとも 1 つの観測値に対して が true (この場合は 1)dummy2かどうかを決定します。この変数は、がの誰かの場合でも( に がありません) 、すべての観測値に対して値を持つ必要があります。私はRとプログラミング全般に非常に慣れていないため、変数で使用するためにこの情報を抽出する方法を理解できませんでした。これはあなたがやりたいことのようですが、行き詰まっています。dummy1groupdummy1NAgroupNAgroupaggregate

したがって、ここに私のデータが仮説的にどのように見えるかのチャンクがあります:

Obs. Group Dummy1 Dummy2
1    101   0      1
2    101   1      1 
3    101   0      1 
4    102   0      0 
5    102   0      0 
6    103   1      1 
7    103   1      1 
8    103   1      1 

したがって、ここでの考え方は、グループ 101 の少なくとも 1 人が の値が 1 であるためdummy1、そのグループのすべてのメンバーが で 1 を取得しdummy2、同様にグループ 103 の誰もが を持っていないため、グループ 103dummy1のすべてのメンバーは の値が 0 であるということです。dummy2. データセットには 1300 のグループを超える 7,000 近くの観測値があるため、ある種のループ設定が必要だと思われますが、誰か助けてくれませんか?

ありがとう!

4

2 に答える 2

2
df$Dummy2 <- with(df, ave(Dummy1 , Group, 
                                FUN=function(x) max(c(0,x), na.rm=TRUE) ) )

テスト対象:

df <- structure(list(Obs. = 1:8, Group = c(101L, 101L, 101L, 102L, 
102L, 103L, 103L, 103L), Dummy1 = c(0L, NA, 0L, NA, NA, 1L, NA, 
1L), Dummy2 = c(0, 0, 0, 0, 0, 1, 1, 1)), .Names = c("Obs.", 
"Group", "Dummy1", "Dummy2"), row.names = c(NA, -8L), class = "data.frame")
于 2013-07-11T22:35:08.083 に答える