R应用并保留性别包的所有行
R Apply and Keeping All Rows with Gender Package
我正在寻找一种将性别函数应用于姓名列表的好方法(我从 XML 中提取),但我想保留所有行以便加入其他数据。关于解决这个问题的好方法有什么建议吗?
目前,我正在从我的示例脚本中删除名称 "Hjuk" 的一行。
当性别功能失败时,我想将该性别识别为 "Unknown" 或 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
您可以使用
df1 <- merge(df0,gender(df0$v1),by.x="v1",by.y="name",all.x=TRUE)
我正在寻找一种将性别函数应用于姓名列表的好方法(我从 XML 中提取),但我想保留所有行以便加入其他数据。关于解决这个问题的好方法有什么建议吗?
目前,我正在从我的示例脚本中删除名称 "Hjuk" 的一行。
当性别功能失败时,我想将该性别识别为 "Unknown" 或 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
您可以使用
df1 <- merge(df0,gender(df0$v1),by.x="v1",by.y="name",all.x=TRUE)