2016-08-16 9 views
-1

複数の値を持つ1つの列を持つ.cvsデータセットがあります。 私は例えば、特定のアイテムは、この機能 を持っている場合、私は、これらの値を分割して立ってブールでマークされた単一機能のカラムにそれらを変更することを願って:私はscikitを確認ブール値(R/Python)でマークされた複数のフィーチャの列として複数の値を分割する方法

| year_built |    amenity    | Elevator | Pets - Cats ok | Post-War | Courtyard | 
------------------------------------------------------------------------------------------------------ 
|  1990 | Courtyard,      |   0 |    0 |  0 |   1 | 
|  2015 | Elevator,Pets - Cats ok,   |   1 |    1 |  0 |   0 | 
|  1998 | Elevator,Pets - Cats ok,Post-War |   1 |    1 |  1 |   0 | 

へ転送

| year_built |  amenity      | 
---------------------------------------------------- 
|  1990 | Courtyard,      | 
|  2015 | Elevator,Pets - Cats ok,   | 
|  1998 | Elevator,Pets - Cats ok,Post-War | 

前処理パッケージでクラス 'binarizer'を学ぶことは、私が望むものを達成することはできますが、その前にこれらの値を分割して認識するための方法も必要になります。

RまたはPythonを使用してこれを処理する方法はありますか?

+1

データの再現可能な例と、探している出力を提供してください... –

+0

あなたのデータの一部(コピーして貼り付け可能)質問のテキスト。私たちがスクリーンショットで作業するのは難しいです。 –

+0

@WeihuangWong私はこれにかなり新しいですが、私は問題をもう一度編集しました。見やすくなりましたが、あなたが言ったコピー&パッシブなテキストではないかもしれません。あなたが言ったコピー&パッシブテキストのリファレンスを教えてください。 –

答えて

1

私は偽のデータセットで1つのアプローチを実証します。

d$split <- strsplit(d$features, ",") 
features <- unique(unlist(d$split)) 
features 
# [1] "h" "d" "j" "a" "e" "c" "i" "b" "f" "g" 

我々は機能が特長の各観測のセットで発見されたかどうかを確認する%in%演算子を使用します:

コンマを使用して機能を分割し、ユニークな機能のベクトルを回復

set.seed(123) 
d <- lapply(replicate(10, sample(letters[1:10], sample(1:10, 1))), function(x){ 
    paste(x, collapse = ",") 
}) 
d <- data.frame(id = 1:10, features = unlist(d), stringsAsFactors = FALSE) 
d 
# id   features 
# 1 1    h,d,j 
# 2 2 a,e,h,d,c,i,b,f,g,j 
# 3 3 c,a,j,g,f,d,h,e,b 
# 4 4  f,j,c,b,i,e,h,d 
# 5 5     e 
# 6 6  c,j,b,a,i,f,h,g 
# 7 7     c,e 
# 8 8    i,a,d 
# 9 9  b,f,j,a,e,i,h,d 
# 10 10     d 

features_matrix <- do.call(rbind, lapply(d$split, function(x) features %in% x)) 
features_matrix <- as.data.frame(features_matrix) 
dimnames(features_matrix) <- list(d$id, features) 
features_matrix 
#  h  d  j  a  e  c  i  b  f  g 
# 1 TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
# 2 TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
# 3 TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE 
# 4 TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE 
# 5 FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE 
# 6 TRUE FALSE TRUE TRUE FALSE TRUE TRUE TRUE TRUE TRUE 
# 7 FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE 
# 8 FALSE TRUE FALSE TRUE FALSE FALSE TRUE FALSE FALSE FALSE 
# 9 TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE FALSE 
# 10 FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 
関連する問題