大規模なデータ セットがあり、特定の列を読み取ったり、他のすべての列を削除したりしたいと考えています。
data <- read.dta("file.dta")
興味のない列を選択します。
var.out <- names(data)[!names(data) %in% c("iden", "name", "x_serv", "m_serv")]
そして、次のようなことをしたいのです:
for(i in 1:length(var.out)) {
paste("data$", var.out[i], sep="") <- NULL
}
不要な列をすべて削除します。これが最適な解決策でしょうか?
ベストアンサー1
インデックスまたはsubset
関数のいずれかを使用する必要があります。例:
R> df <- data.frame(x=1:5, y=2:6, z=3:7, u=4:8)
R> df
x y z u
1 1 2 3 4
2 2 3 4 5
3 3 4 5 6
4 4 5 6 7
5 5 6 7 8
which
次に、列のインデックス作成で関数と演算子を使用できます-
。
R> df[ , -which(names(df) %in% c("z","u"))]
x y
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
または、もっと簡単に、select
関数の引数を使用します。列名のベクトルに対して演算子を直接subset
使用でき、名前を囲む引用符を省略することもできます。-
R> subset(df, select=-c(z,u))
x y
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
他の列をドロップする代わりに、必要な列を選択することもできます。
R> df[ , c("x","y")]
x y
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6
R> subset(df, select=c(x,y))
x y
1 1 2
2 2 3
3 3 4
4 4 5
5 5 6