根据另一列操纵列的值

时间:2017-08-01 07:40:36

标签: r dplyr data-manipulation tidyr

我的数据框如下所示:

<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

<input type="text" id="from" name="FechaLlegada" class="campo" placeholder="Llegada" focusOnShow="false" ignoreReadonly="true" readonly="true">

<input type="text" id="to" name="FechaSalida" class="campo" placeholder="Salida" focusOnShow="false" ignoreReadonly="true" readonly="true">

我想关注df <- read.table(header = TRUE, text = "STUD_ID MEAS VALUE 1 LVEF(M-M) 69 1 LVEF(2D) 66 2 LVEF(2D) 36 2 LVEF(2D) 72 2 IVSD 63 3 LVEF(M-M) 50 4 LVEF(2D) 71 4 PASP 55", stringsAsFactors = FALSE) MEAS的{​​{1}}。

  1. 如果LVEF(M-M)的{​​{1}} LVEF(2D)STUD_IDVALUE都相对应,那么我们只会过滤后者,即LVEF(M-M)
  2. 如果LVEF(2D)有2个LVEF(2D)STUD_ID对应,那么我们采用均值。
  3. 我想要的输出是:

    VALUE

    我尝试了以下但是它给了我一个错误:

    LVEF(2D)

    我的数据框包含除了这3个变量之外的其他变量,我希望保留它们。

1 个答案:

答案 0 :(得分:1)

这就是你要找的......

df2 <- df %>% group_by(STUD_ID,MEAS) %>% 
  summarise(VALUE=mean(VALUE)) %>% 
  group_by(STUD_ID) %>% mutate(TEMP2D=("LVEF(2D)" %in% MEAS)) %>% 
  filter(!(MEAS=="LVEF(M-M)" & TEMP2D)) %>% 
  select(-TEMP2D)

df2
# A tibble: 6 x 3
# Groups:   STUD_ID [4]
  STUD_ID      MEAS VALUE
    <int>     <chr> <dbl>
1       1  LVEF(2D)    66
2       2      IVSD    63
3       2  LVEF(2D)    54
4       3 LVEF(M-M)    50
5       4  LVEF(2D)    71
6       4      PASP    55
相关问题