R语言中怎样求得某个变量首次出现某个值之前的数据

15178843972 |浏览927次
收藏|2017/03/12 18:01
  • 问题补充 : 2017/03/12 18:04

    sex   score

    F        50

    M      43

    F       80

    M     12

    M     70

    各自统计男生第一次及格之前有多少人没及格   和   女生第一次及格之前有多少人没及格

满意回答

2017/03/17 10:51

library(tidyverse) #如果没装,装一下

M.failed <- data %>% #男生第一次及格之前没及格人数
  mutate(failed = score < 60, nfailed = cumsum(failed)) %>% #添加没及格的标签
  filter(sex == "M", failed == FALSE) %>% #滤出男生且及格的行
  select(nfailed) %>% #选择没及格的人数列
  first() #只需要第一次及格时的数据(统计了男女生全部未及格人数)

F.failed <- data %>%
  mutate(failed = score < 60, nfailed = cumsum(failed)) %>%
  filter(sex == "F", failed == FALSE) %>%
  select(nfailed) %>%
  first()

data 是你的数据框,结果保存在 M.failed 和 F.failed 里面。

niheaven

其他回答(1)    我来补答
  • A<-subset(文件名,sex=F)#先把男女单独挑出来

    for i in 1:length(A$sex)(

    if A$score[i]>59

    return renshu=i-1)#再找出大于59的


    回答于 2017/03/12 19:08
  • library(tidyverse) #如果没装,装一下

    M.failed <- data %>% #男生第一次及格之前没及格人数
      mutate(failed = score < 60, nfailed = cumsum(failed)) %>% #添加没及格的标签
      filter(sex == "M", failed == FALSE) %>% #滤出男生且及格的行
      select(nfailed) %>% #选择没及格的人数列
      first() #只需要第一次及格时的数据(统计了男女生全部未及格人数)

    F.failed <- data %>%
      mutate(failed = score < 60, nfailed = cumsum(failed)) %>%
      filter(sex == "F", failed == FALSE) %>%
      select(nfailed) %>%
      first()

    data 是你的数据框,结果保存在 M.failed 和 F.failed 里面。
    回答于 2017/03/14 12:00
2人关注该问题
+1
 加载中...