0

州のデータフレームをサブセット化しています。列のサブ領域に「唾」がある行が必要です。しかし、それは私にすべてのNAを与えます。どこが間違っていますか?

最終的には、このような別の列を追加したい

states$code[states$subregion=="spit"]="Priority1"

コード例:

states=map_data("state")
states[states$subregion=="spit",]
# long lat group order region subregion
# NA     NA  NA    NA    NA   <NA>      <NA>
# NA.1   NA  NA    NA    NA   <NA>      <NA>
# NA.2   NA  NA    NA    NA   <NA>      <NA>
# NA.3   NA  NA    NA    NA   <NA>      <NA>
# NA.4   NA  NA    NA    NA   <NA>      <NA>
# NA.5   NA  NA    NA    NA   <NA>      <NA>

しかし、これは私に正しい結果を与えますstates[states$region=="north carolina",]

4

1 に答える 1

2

の構造を見て、特にに値statesがあることに注意してください。角かっこを使用してサブセット化する場合は、がサブセットに含まれます。小さな例:NAsubregionNA

dat <- data.frame(x=1:10, y=c('a', 'b'), z='foo')
dat$y[9:10] <- NA

dat[dat$y == 'a',]

      x    y    z
1     1    a  foo
3     3    a  foo
5     5    a  foo
7     7    a  foo
NA   NA <NA> <NA>
NA.1 NA <NA> <NA>

または同様のものを使用するna.omitと、期待する結果が表示されます。

foo <- states[states$subregion=="spit",]
foo[!is.na(foo$subregion),]

#            long      lat group order         region subregion
# 10321 -76.00285 36.55471    40 10321 north carolina      spit
# 10322 -75.93983 36.55471    40 10322 north carolina      spit
# 10323 -75.92837 36.54898    40 10323 north carolina      spit
# 10324 -75.91691 36.52606    40 10324 north carolina      spit
# 10325 -75.91118 36.50887    40 10325 north carolina      spit
# 10326 -75.91118 36.49168    40 10326 north carolina      spit
# 10327 -75.93983 36.49168    40 10327 north carolina      spit
# 10328 -75.96848 36.49741    40 10328 north carolina      spit
# 10329 -75.97421 36.50314    40 10329 north carolina      spit
# 10330 -75.97421 36.52606    40 10330 north carolina      spit
# 10331 -75.98566 36.55471    40 10331 north carolina      spit
# 10332 -76.00285 36.55471    40 10332 north carolina      spit

または一行で:

states[states$subregion == 'spit' & !is.na(states$subregion),]
于 2013-02-14T20:37:27.027 に答える