2017-04-24 65 views
0

我正在尋找一種將性別函數應用於名稱列表(我從XML中提取)的好方法,但我想保留所有行以便加入其他數據。有什麼建議可以很好地解決這個問題?R應用並保持包含性別包的所有行

目前,我從我的示例腳本中刪除了一行名爲「Hjuk」的行。

當性別功能失敗時,我想將此性別標識爲「未知」或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到數據框,然後運行合併。 df0 < - data.frame(c(「Sara」,「Tiffany」,「Tyler」,「Rajdeep」,「Josee」,「hjuk」,「Tyler」),stringsAsFactors = FALSE) colnames(df0)< - 「v1」 df1 < - merge(df0,gender(df0 $ v1),by.x =「v1」,by.y =「name」,all.x = TRUE)' – bridgbro

+1

或嘗試'df1 < - merge df0,gender(unique(df0 $ v1)),by.x =「v1」,by.y =「name」,all.x = TRUE)' –

+0

非常棒!那就是訣竅。 – bridgbro