2017-04-24 8 views
0

ジェンダー関数を名前リストに適用するには(XMLから引き出しています)、すべての行を保持する必要があります追加データに参加する。これにアプローチする良い方法に関する提案はありますか?Rジェンダーパッケージですべての行を適用して維持する

現在、サンプルスクリプトから「Hjuk」という名前の行を1つ削除しています。

性機能が失敗した場合、その性別を「不明」またはNAと識別したいと思います。私の完全なデータセットはかなり大きく、約11000行が走っています。ご意見ありがとうございます。以下は

は一例です:

require(gender) 

df0 <- data.frame(c("Sara","Tiffany","Tyler","Rajdeep","Josee","Hjuk"), stringsAsFactors = FALSE) 
colnames(df0) <- "v1" 
df1 <- apply(df0, 1, function(x) gender(x)) 
df2 <- do.call(rbind, lapply(df1, data.frame, stringsAsFactors=FALSE)) 
df2 

name proportion_male proportion_female gender year_min year_max 
1 Sara   0.0029   0.9971 female  1932  2012 
2 Tiffany   0.0034   0.9966 female  1932  2012 
3 Tyler   0.9714   0.0286 male  1932  2012 
4 Rajdeep   0.7786   0.2214 male  1932  2012 
5 Josee   0.0000   1.0000 female  1932  2012 
+0

でこれを行うことができます。とにかく関数自体に "未知の"オプションを置くことはありますか? –

+0

その機能が組み込まれていないようです。NAを返したり、元のデータセットにキーで結合できるかどうかは疑問です。私は多分もっとコーヒーが必要です... – bridgbro

答えて

1

あなたはそれを助けるのは難しい機能を見ることなく

df1 <- merge(df0,gender(df0$v1),by.x="v1",by.y="name",all.x=TRUE) 
+0

発見されたマージは、重複する名前が好きではありません。私は、データフレームにユニークなIDを追加し、マージを実行することができると仮定しています。文字列AsFactors = FALSE) colnames(df0)< - df0 < - data.frame(c( "Sara"、 "Tiffany"、 "Tyler"、 "Rajdeep"、 "Josee"、 "hjuk"、 "Tyler" "v1"df1 < - merge(df0、gender(df0 $ v1)、by.x = "v1"、by.y = "name"、all.x = TRUE) ' – bridgbro

+1

または、' df1 < - merge df0、gender(一意(df0 $ v1))、by.x = "v1"、by.y = "name"、all.x = TRUE) ' –

+0

優秀!それがトリックでした。 – bridgbro

関連する問題