簡體   English   中英

如何使用每列的篩選數據在另一個數據框中創建具有自定義列的新數據框

[英]How to create new data frame with custom columns out of another data frame, on filtered data per each column

我試圖尋找類似的問題,但找不到類似的問題。

我有一個具有數百行和幾個變量的數據框df。 第一個變量是級別 ,從1到8。

例如:

df<- data.frame(level = c(1,1,1,2,2,3,4,5,6,7,8), CODE = c("1234", "3452", "1234", "7654","6547","6546", "7683", "6543", "7683", "6543", "7683"), ADD_ALLOW_MEAL = c(NA, "Y", "Y", "N", "N", NA, NA, "Y", "Y", "N", 'N'), ALLOW_MEALLOW = c(NA, 40, 60, NA, NA, NA, NA, 50, 70, NA, NA)) 

> df
   level     CODE ADD_ALLOW_MEAL     ALLOW_MEALLOW
1      1     1234           <NA>                NA
2      1     3452              Y                40
3      1     1234              Y                60
4      2     7654              N                NA
5      2     6547              N                NA
6      3     6546           <NA>                NA
7      4     7683           <NA>                NA
8      5     6543              Y                50
9      6     7683              Y                70
10     7     6543              N                NA
11     8     7683              N                NA

我需要創建一個僅包含8行(來自df的8個級別)的數據框。 通常我會使用簡單的方法:

df %>% 
  group_by(level) %>% 
  summarise()

問題是我需要在過濾后的數據上針對每個級別創建幾個非常自定義的列。

例:

df %>% 
  group_by(level) %>% 
  summarise(
    Meal_Average =  filter(., ADD_ALLOW_MEAL =="Y" & ALLOW_MEALLOW>0) %>% {ifelse(str_detect(.$CODE, "2")=="TRUE", round(mean(.$ALLOW_MEALLOW, na.rm = TRUE),3), NA_real_ )}  
  )

我收到以下錯誤:

 Column `Meal_Average` must be length 1 (a summary value), not 4 

我想要的結果是:

 level    Meal_Average 
1      1   50
2      2   NA
3      3   NA
4      4   NA
5      5   NA
6      6   NA
7      7   NA
8      8   NA

有什么想法我該怎么做?

謝謝!!

這是使用dplyr的想法。 我在這里所做的是,我只是使用您的條件將ALLOW_MEALLOW值替換為0(以便不影響均值),即

library(dplyr)

df %>% 
 mutate(ALLOW_MEALLOW = replace(ALLOW_MEALLOW, ADD_ALLOW_MEAL == 'N' & ALLOW_MEALLOW < 0 | !grepl('2', CODE), 0)) %>% 
 group_by(level) %>% 
 summarise(new_mean = mean(ALLOW_MEALLOW, na.rm = TRUE))

這使,

 # A tibble: 8 x 2 level new_mean <dbl> <dbl> 1 1 50 2 2 0 3 3 0 4 4 0 5 5 0 6 6 0 7 7 0 8 8 0 

注意:您可以照常用NA替換0

暫無
暫無

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

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