簡體   English   中英

根據R中另一列的值得到一個值 - dplyr

[英]Get a value based on the value of another column in R - dplyr

我得到了這個 df:

df <- data.frame(month = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4),
                 day   = c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5),
                 flow  = c(2,5,7,8,5,4,6,7,9,2,NA,1,6,10,2,NA,NA,NA,NA,NA))

我想達到這個結果:

   month   day  flow   dayofminflow
 1     1     1     2     1
 2     1     2     5     1
 3     1     3     7     1
 4     1     4     8     1
 5     1     5     5     1
 6     2     1     4     5
 7     2     2     6     5
 8     2     3     7     5
 9     2     4     9     5
10     2     5     2     5
11     3     1    NA     2
12     3     2     1     2
13     3     3     6     2
14     3     4    10     2
15     3     5     2     2
16     4     1    NA    NA
17     4     2    NA    NA
18     4     3    NA    NA
19     4     4    NA    NA
20     4     5    NA    NA

我正在使用這個解決方案,但當第一個值為 NA 時它返回 NA:

newdf <- df %>% group_by(month) %>% mutate(Val=day[flow==min(flow)][1])

當所有數據均為 NA 時,此解決方案會返回錯誤:

library(dplyr)
df <- df %>%
       group_by(month) %>% 
       mutate(dayminflowofthemonth = day[which.min(flow)]) %>%
       ungroup

您只需更改第一個解決方案中min()中的默認na.rm = TRUE即可忽略 NA 嗎?

df %>% 
    group_by(month) %>% 
    mutate(dayofminflow = day[which(min(flow, na.rm = TRUE) == flow)][1])

# A tibble: 20 x 4
# Groups:   month [4]
   month   day  flow dayofminflow
   <dbl> <dbl> <dbl>        <dbl>
 1     1     1     2            1
 2     1     2     5            1
 3     1     3     7            1
 4     1     4     8            1
 5     1     5     5            1
 6     2     1     4            5
 7     2     2     6            5
 8     2     3     7            5
 9     2     4     9            5
10     2     5     2            5
11     3     1    NA            2
12     3     2     1            2
13     3     3     6            2
14     3     4    10            2
15     3     5     2            2
16     4     1    NA           NA
17     4     2    NA           NA
18     4     3    NA           NA
19     4     4    NA           NA
20     4     5    NA           NA

盡管您收到警告no non-missing arguments to min; returning Inf 從第4個月開始no non-missing arguments to min; returning Inf ,因為所有流量值都是 NA。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM