指標を含むグループを特定したいと考えています。districts
以下の例では、 が含まれていることを識別したいと思いますcounty == 'other'
。county == 'other'
aにある場合、その地区の各行の指標変数を、elseにdistrict
したいと思います。以下に、 、 、を使用してこれを行う試みをいくつか示しますが、どれも機能しません。おそらく、 のすべての行を抽出し、インジケーターをそのサブセットの 1 つとして定義し、そのサブセットを元のデータ セットにマージすることができますが、もっと簡単な方法があるに違いないと考え続けています。アドバイスありがとうございます。1
0
split
lapply
any
county == 'other'
df.1 <- read.table(text = '
state district county apples
AA EC AB 100
AA EC BC 10
AA EC DC 150
AA C FG 200
AA C other 20
AA C HC 250
AA WC RT 300
AA WC TT 30
AA WC other 350
', header=TRUE, stringsAsFactors = FALSE)
desired.result <- read.table(text = '
state district county apples indicator
AA EC AB 100 0
AA EC BC 10 0
AA EC DC 150 0
AA C FG 200 1
AA C other 20 1
AA C HC 250 1
AA WC RT 300 1
AA WC TT 30 1
AA WC other 350 1
', header=TRUE, stringsAsFactors = FALSE)
# various attempts that do not work
with(df.1, lapply(split(county, district), function(x) {any(x)=='county' <- 1} ))
with(df.1, lapply(split(county, district), function(x) {ifelse(any(x)=='other', 1, 0)} ))
with(df.1, lapply(split(county, district), function(x) {any(x)=='other'} ))
with(df.1, lapply(split(df.1 , district), function(x) {any(x$county)=='other'} ))
with(df.1, lapply(split(county, district), function(x) {x=='other'} ))
編集
上記のサブセット/マージアプローチは次のとおりです。
df.indicator <- df.1[df.1$county == 'other',]
df.indicator <- df.indicator[,1:2]
df.indicator$indicator = 1
merge(df.1, df.indicator, by=c('state', 'district'), all=TRUE)
ベースRを使用することを好みます。