这是我的代码和数据集
function1 <- function(){
dataset <- url("https://intro-datascience.s3.us-east-2.amazonaws.com/role.json")
readlines <- jsonlite::fromJSON(dataset)
newDf <- readlines$objects$person
finalDf <- cbind(newDf, age = df$age)
return(finalDf)
}
到目前为止,我创建了一个函数,通过从男性参议员总数中减去76,告诉我有多少女性参议员拥有YouTube账户:
woman <- function(){
a1 <- length(grep("female", df$gender))
a2 <- length(grep("", df$youtubeid))-76
return(sum(a1 + a2))
}
但为了创建新的df,我被那些拥有YouTube账户的女人困住了。。
考虑df
是从函数1生成的数据帧。以下是tidyverse
中的替代方案
包装
library(dplyr)
解决方案
女性youtubeid
仅选择gender
==";女性">和情况,其中youtubeid
不缺少NA
。为此,我使用了dplyr
中的filter()
。因此,我们正在筛选语句为TRUE
的所有行。换句话说,如果一行的性别为";女性";并且没有遗漏";youtubeid";那我就保留那一排。如果没有,我就放弃那一排。这样,在最终的数据集中,我只有youtubeid
的女性。
women_df <- df %>%
filter(!is.na(youtubeid),
gender == "female")
有多少女性拥有youtube id
women_df %>%
nrow()
输出
[1] 16
ps:我不知道你为什么要创建函数,但如果你需要一个函数,就把所有的东西都包装在一个函数周围(如果你想把它发送给其他人,记得在函数中包含dplyr
(。