r语言 - 对于我的df,我正在寻找有多少女参议员拥有YouTube帐户,然后与那些拥有YouTube帐户的女性创建一个新的df



这是我的代码和数据集

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(。

最新更新