すべての変数が文字型であるデータ フレームがあります。列の多くは完全に空です。つまり、変数ヘッダーだけがあり、値はありません。空の列をサブセット化する方法はありますか?
38220 次
9 に答える
28
空の列が本当に空の文字列である場合、次のようなものが機能するはずです。「空の」文字列にスペースが含まれている場合は、変更する必要があります。
サンプルデータ:
mydf <- data.frame(
A = c("a", "b"),
B = c("y", ""),
C = c("", ""),
D = c("", ""),
E = c("", "z")
)
mydf
# A B C D E
# 1 a y
# 2 b z
「空の」列を特定して削除します。
mydf[!sapply(mydf, function(x) all(x == ""))]
# A B E
# 1 a y
# 2 b z
または、@Roland が推奨するように:
> mydf[, colSums(mydf != "") != 0]
A B E
1 a y
2 b z
于 2013-07-16T09:25:54.460 に答える
12
次のいずれかを実行できます。
emptycols <- sapply(df, function (k) all(is.na(k)))
df <- df[!emptycols]
また:
emptycols <- colSums(is.na(df)) == nrow(df)
df <- df[!emptycols]
空の場合、それらが""
であることを意味する場合、2 番目のアプローチは次のように適応できます。
emptycols <- colSums(df == "") == nrow(df)
于 2013-07-16T09:26:53.320 に答える
4
""
それはあなたが空のことを意味するかによって異なります:それは NA または" "
ですか? このようなものがうまくいくかもしれません:
df[,!apply(df, 2, function(x) all(gsub(" ", "", x)=="", na.rm=TRUE))]
于 2013-07-16T09:35:39.973 に答える
2
purrr
パッケージを使用した簡単なソリューション:
purrr::discard(my_data_frame, ~all(is.na(.)))
于 2019-12-30T10:51:19.763 に答える
0
列インデックスがわかっている場合は、使用できます
df[,-c(3, 5, 7)]
これにより、列 3、5、7 が省略されます。
于 2013-07-16T09:23:16.573 に答える