【问题标题】:Removing certain columns based on the value of a row根据行的值删除某些列
【发布时间】:2022-11-22 11:02:04
【问题描述】:

使用此代码,我将 mtcars 示例的第一行设为“p 值”

我想在第一行中创建一个条件代码,如果 p 值为 0.05 或更小,则保留它,如果更大,则删除该特定列。

DF<- as.data.frame(mtcars)
rownames(DF)[1] <- "p-value"
DF_row <- rownames(DF)
DF <- cbind(DF_row, DF)
rownames(DF) <- NULL
p_val <- c(0.01, 0.2, 0.1, 0.03, 0.014, 0.09, 0.05, 0.01, 0.03, 0.04, 0.011)
colnames(DF)[1] <- "Cars"
DF[2:12] <- p_val

这样做的最佳方法是什么?我在网上到处找,但我似乎找不到最适合这个的方法。非常感谢任何建议

【问题讨论】:

    标签: r data-wrangling


    【解决方案1】:

    您可以只检查第一行,然后再次绑定所有其他行。

    这是 Dplyr 的示例。

    解决方案

    我通过将 9999 放在适当的位置来识别 p>.05,其他所有值都是相同的。

    library(dplyr)
    
    DF[1,] %>%  mutate(across(is.numeric, ~ifelse(.x < .05, .x, 9999))) %>% 
      bind_rows(DF[-1,])
    

    或者,您可以将它们识别为缺少输入 NA_real_

    DF[1,] %>%  mutate(across(is.numeric, ~ifelse(.x < .05, .x, NA_real_ ))) %>% 
      bind_rows(DF[-1,])
    

    输出

                      Cars   mpg   cyl  disp    hp  drat       wt     qsec    vs    am     gear     carb
    1              p-value 0.010 0.011 0.040 0.030 0.010 9999.000 9999.000 0.014 0.030 9999.000 9999.000
    2        Mazda RX4 Wag 0.200 0.010 0.011 0.040 0.030    0.010    0.050 0.090 0.014    0.030    0.100
    3           Datsun 710 0.100 0.200 0.010 0.011 0.040    0.030    0.010 0.050 0.090    0.014    0.030
    4       Hornet 4 Drive 0.030 0.100 0.200 0.010 0.011    0.040    0.030 0.010 0.050    0.090    0.014
    5    Hornet Sportabout 0.014 0.030 0.100 0.200 0.010    0.011    0.040 0.030 0.010    0.050    0.090
    6              Valiant 0.090 0.014 0.030 0.100 0.200    0.010    0.011 0.040 0.030    0.010    0.050
    7           Duster 360 0.050 0.090 0.014 0.030 0.100    0.200    0.010 0.011 0.040    0.030    0.010
    8            Merc 240D 0.010 0.050 0.090 0.014 0.030    0.100    0.200 0.010 0.011    0.040    0.030
    9             Merc 230 0.030 0.010 0.050 0.090 0.014    0.030    0.100 0.200 0.010    0.011    0.040
    10            Merc 280 0.040 0.030 0.010 0.050 0.090    0.014    0.030 0.100 0.200    0.010    0.011
    11           Merc 280C 0.011 0.040 0.030 0.010 0.050    0.090    0.014 0.030 0.100    0.200    0.010
    12          Merc 450SE 0.010 0.011 0.040 0.030 0.010    0.050    0.090 0.014 0.030    0.100    0.200
    13          Merc 450SL 0.200 0.010 0.011 0.040 0.030    0.010    0.050 0.090 0.014    0.030    0.100
    14         Merc 450SLC 0.100 0.200 0.010 0.011 0.040    0.030    0.010 0.050 0.090    0.014    0.030
    15  Cadillac Fleetwood 0.030 0.100 0.200 0.010 0.011    0.040    0.030 0.010 0.050    0.090    0.014
    16 Lincoln Continental 0.014 0.030 0.100 0.200 0.010    0.011    0.040 0.030 0.010    0.050    0.090
    17   Chrysler Imperial 0.090 0.014 0.030 0.100 0.200    0.010    0.011 0.040 0.030    0.010    0.050
    18            Fiat 128 0.050 0.090 0.014 0.030 0.100    0.200    0.010 0.011 0.040    0.030    0.010
    19         Honda Civic 0.010 0.050 0.090 0.014 0.030    0.100    0.200 0.010 0.011    0.040    0.030
    20      Toyota Corolla 0.030 0.010 0.050 0.090 0.014    0.030    0.100 0.200 0.010    0.011    0.040
    21       Toyota Corona 0.040 0.030 0.010 0.050 0.090    0.014    0.030 0.100 0.200    0.010    0.011
    22    Dodge Challenger 0.011 0.040 0.030 0.010 0.050    0.090    0.014 0.030 0.100    0.200    0.010
    23         AMC Javelin 0.010 0.011 0.040 0.030 0.010    0.050    0.090 0.014 0.030    0.100    0.200
    24          Camaro Z28 0.200 0.010 0.011 0.040 0.030    0.010    0.050 0.090 0.014    0.030    0.100
    25    Pontiac Firebird 0.100 0.200 0.010 0.011 0.040    0.030    0.010 0.050 0.090    0.014    0.030
    26           Fiat X1-9 0.030 0.100 0.200 0.010 0.011    0.040    0.030 0.010 0.050    0.090    0.014
    27       Porsche 914-2 0.014 0.030 0.100 0.200 0.010    0.011    0.040 0.030 0.010    0.050    0.090
    28        Lotus Europa 0.090 0.014 0.030 0.100 0.200    0.010    0.011 0.040 0.030    0.010    0.050
    29      Ford Pantera L 0.050 0.090 0.014 0.030 0.100    0.200    0.010 0.011 0.040    0.030    0.010
    30        Ferrari Dino 0.010 0.050 0.090 0.014 0.030    0.100    0.200 0.010 0.011    0.040    0.030
    31       Maserati Bora 0.030 0.010 0.050 0.090 0.014    0.030    0.100 0.200 0.010    0.011    0.040
    32          Volvo 142E 0.040 0.030 0.010 0.050 0.090    0.014    0.030 0.100 0.200    0.010    0.011
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      相关资源
      最近更新 更多