0

したがって、いくつかの連続変数といくつかのダミー変数を持つデータ フレームがあります。このデータ フレームの元となった調査では、6、7、8、および 9 を使用して、さまざまなタイプの無回答を示しています。したがって、6、7、8、および 9 がダミー変数の列に表示されるたびに NA に置き換えたいと思いますが、それらは連続変数の列のままにしておきます。

これを行うための簡潔な方法はありますか?ここに私のデータがあります:

> dput(head(sfsuse[c(4:16)]))
structure(list(famsize = c(3L, 1L, 2L, 5L, 3L, 5L), famtype = c(2L, 
1L, 2L, 3L, 2L, 3L), cc = c(1L, 1L, 1L, 1L, 1L, 1L), nocc = c(1L, 
1L, 1L, 3L, 1L, 1L), pdloan = c(2L, 2L, 2L, 2L, 2L, 2L), help = c(2L, 
2L, 2L, 2L, 2L, 2L), budget = c(1L, 1L, 1L, 1L, 2L, 2L), income = c(340000L, 
20500L, 0L, 165000L, 95000L, -320000L), govtrans = c(7500L, 15500L, 
22000L, 350L, 0L, 9250L), childexp = c(0L, 0L, 0L, 0L, 0L, 0L
), homeown = c(1L, 1L, 1L, 1L, 1L, 2L), bank = c(2000L, 80000L, 
25000L, 20000L, 57500L, 120000L), vehval = c(33000L, 7500L, 5250L, 
48000L, 8500L, 50000L)), .Names = c("famsize", "famtype", "cc", 
"nocc", "pdloan", "help", "budget", "income", "govtrans", "childexp", 
"homeown", "bank", "vehval"), row.names = c(NA, 6L), class = "data.frame")

列3:7と列11の6、7、8、および9のNAでサブしようとしています。列名で一度に1列ずつこれを行う方法を知っています:

 df$name[df$name %in% 6:9]<-NA

名前で各列に対してこれを行う必要がありますが、列インデックスで行う簡潔な方法はありますか?

ありがとう

4

1 に答える 1

1

この機能は動作するはずです

f <- function(data,k) {
  data[data[,k] %in% 6:9,k] <- NA
  data
}

コンソールで:

> for (k in c(3:7,11)) { data <- f(data,k) }
于 2012-06-29T15:00:23.343 に答える