【问题标题】:Create variable of proportions conditional on level of factor from subsets of data using tidyverse使用 tidyverse 从数据子集创建以因子水平为条件的比例变量
【发布时间】:2017-09-06 01:33:52
【问题描述】:

我有一个这样的数据框:

df<- data.frame(year= as.character(c("1997", 
"1997","1997","1997","1997","1997","1998","1998")),season= 
as.character(c("W", "W","W","D","D","D","W","W")),result= 
as.character(c("Y", "Y","N","N","Y","N","N","N")))

我想通过yearseason 对数据进行子集化,并计算该特定子集在result 中“Y”的比例。这个新的比例列称为psit_freq。下面是一个输出示例(我制作了比例分数以帮助读者理解我需要的计算)。

output<- data.frame(year= as.character(c("1997", 
"1997","1998")),season= as.character(c("W", "D","W")), psit_freq= 
 as.character(c("2/3", "1/3","0/2")))

我尝试过以下几种变化:

df<- 
 df %>%
 group_by(year, season)%>%
 summarise(psit_freq= freq())

但我不确定如何合并条件 if else 语句来计算 Y 响应占每个子集中 result 总行的比例。

【问题讨论】:

  • 考虑从下方接受您认为最有帮助的答案(答案左侧的复选标记)。这让社区知道答案在您的案例中有效。
  • 谢谢,我不知道我没有接受答案。

标签: r tidyverse


【解决方案1】:

您所需要做的就是将result 更改为整数(或逻辑),然后像您一样按yearseason 分组并总结取result 的平均值。


library(dplyr)

df <- tibble(
  year= c("1997", "1997","1997","1997","1997","1997","1998","1998"),
  season= c("W", "W","W","D","D","D","W","W"),
  result= c("Y", "Y","N","N","Y","N","N","N")
)

df %>% 
  mutate(result = recode(result, "Y" = 1L, "N" = 0L)) %>% 
  group_by(year, season) %>% 
  summarise(psit_freq = mean(result))

#> # A tibble: 3 x 3
#> # Groups:   year [?]
#>    year season psit_freq
#>   <chr>  <chr>     <dbl>
#> 1  1997      D 0.3333333
#> 2  1997      W 0.6666667
#> 3  1998      W 0.0000000

【讨论】:

    【解决方案2】:
    data.frame(year=as.character(c("1997","1997","1997","1997","1997","1997","1998","1998")),
               season=as.character(c("W", "W","W","D","D","D","W","W")),
               result=as.character(c("Y", "Y","N","N","Y","N","N","N"))) %>% 
      group_by(year, season) %>% 
      summarise(psit_freq = sum(result == "Y")/length(result))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多