【问题标题】:R Create functionsR 创建函数
【发布时间】:2022-07-05 23:36:45
【问题描述】:

我想创建一个函数,在一个函数中执行以下代码行中的操作,但要能够选择时间间隔(15 分钟或 30 分钟或 60 分钟)作为函数中的参数,不像我的情况只是在重复2之后。

#  values for V17 occur exactly 2 times, taking into account the columns V5 V1 V2)
duplitates2 <-
  Data1 %>% 
  group_by(V5, V1, V2, V17) %>%
  filter (n() == 2) %>%
  ungroup()
#Filter the data for the 30-minute time frame 
duplitates_30_2 <- filter(duplitates2, V16=='30 min')

# export a DataFrame to CSV so as to keep the names from the first row of Data1
write.csv(x = duplitates1_30_2, path = "duplitates1_30_2.csv", col_names = TRUE)

提前感谢您的帮助。我不知道如何在一个函数中编写它。

示例数据:

structure(list(V1 = c("Row", "5", "5", "5", "5", "5", "5", "5", 
"5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", "5", 
"5", "5", "5", "5", "5", "5", "5", "5", "5"), V2 = c("Column", 
"1", "1", "3", "3", "2", "2", "1", "1", "3", "1", "1", "1", "1", 
"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", 
"1", "2", "2"), V3 = c("Planes", "1", "1", "1", "1", "1", "1", 
"1", "1", "1", "3", "1", "1", "1", "2", "1", "1", "1", "1", "1", 
"1", "1", "1", "1", "1", "1", "1", "1", "1", "1"), V4 = c("Timepoint", 
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
"0", "0", "0"), V5 = c("Box", "62", "62", "27", "32", "10", "10", 
"14", "14", "50", "50", "43", "43", "22", "22", "48", "48", "48", 
"34", "57", "57", "60", "60", "1", "11", "42", "63", "63", "44", 
"44"), V6 = c(" No", "1", "7", "2", "29", "1", "15", "27", "28", 
"14", "15", "48", "49", "1", "2", "1", "21", "18", "19", "23", 
"24", "14", "15", "29", "31", "1", "2", "1", "36", "2"), V7 = c("X", 
"94", "104", "129", "153", "37", "60", "50", "80", "55", "92", 
"78", "555", "937", "930", "170", "72", "103", "43", "80", "231", 
"238", "81", "112", "104", "424", "438", "350", "392", "892"), 
    V8 = c("Y", "72", "103", "43", "80", "231", "238", "81", 
    "112", "104", "104", "96", "101", "92", "114", "72", "99", 
    "54", "64", "94", "104", "129", "153", "37", "60", "50", 
    "80", "55", "92", "78"), V9 = c("X2", "78", "555", "937", 
    "930", "170", "72", "96", "101", "92", "114", "72", "99", 
    "54", "78", "555", "937", "930", "170", "72", "2", "29", 
    "1", "15", "27", "28", "14", "15", "48", "49"), V10 = c("Y2", 
    "103", "43", "80", "231", "238", "81", "112", "104", "424", 
    "438", "350", "392", "892", "56", "72", "99", "54", "64", 
    "94", "233", "129", "153", "37", "60", "50", "80", "55", 
    "92", "78"), V11 = c("X3 ", "1", "1", "1", "1", "1", "1", 
    "3", "1", "72", "2", "29", "1", "15", "27", "28", "14", "15", 
    "48", "49", "96", "101", "92", "114", "72", "99", "54", "2873,91", 
    "2850,16", "-368,71"), V12 = c("Y3", "72", "2", "29", "1", 
    "15", "27", "28", "14", "15", "48", "49", "101", "92", "114", 
    "72", "99", "1", "1", "1", "1", "1", "1", "3", "1", "438", 
    "350", "392", "892", "56"), V13 = c("Dose", "10", "10", "0,1", 
    "0,1", "0,1", "0,1", "1", "1", "1", "0,1", "0,1", "10", "10", 
    "10", "10", "10", "10", "10", "1", "1", "1", "1", "1", "1", 
    "0,1", "0,1", "0,1", "0,1", "0,1"), V14 = c("Room 1", "1", 
    "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", 
    "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", 
    "1", "1", "1", "1"), V15 = c("Room 2", "2", "2", "2", "2", 
    "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", 
    "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", "2", 
    "2"), V16 = c("Time", "30 min", "30 min", "30 min", "30 min", 
    "15 min", "15 min", "60 min", "30 min", "30 min", "15 min", 
    "60 min", "30 min", "30 min", "15 min", "30 min", "30 min", 
    "30 min", "30 min", "30 min", "30 min", "15 min", "30 min", 
    "30 min", "30 min", "30 min", "30 min", "30 min", "15 min", 
    "15 min"), V17 = c("Objects", "6", "6", "1", "13", "2", "2", 
    "12", "1", "1", "1", "11", "1", "1", "5", "1", "1", "7", 
    "1", "1", "1", "24", "1", "1", "1", "1", "14", "14", "6", 
    "6")), class = "data.frame", row.names = c(NA, -30L))

【问题讨论】:

    标签: r function


    【解决方案1】:

    这个怎么样:

    library(dplyr)
    myfun <- function(data, interval=c("15 min", "30 min", "60 min")){
    interval <- match.arg(interval)
    data %>% 
      group_by(V5, V1, V2, V17) %>%
      filter (n() == 2) %>%
      ungroup() %>% 
      filter(V16==interval)
    }
    
    duplicates_30_2 <- myfun(Data1, interval = "30 min")
    duplicates_30_2
    # # A tibble: 8 × 17
    #   V1    V2    V3    V4    V5    V6    V7    V8    V9    V10   V11    V12   V13   V14   V15   V16   V17  
    #   <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>  <chr> <chr> <chr> <chr> <chr> <chr>
    # 1 5     1     1     0     62    1     94    72    78    103   1      72    10    1     2     30 m… 6    
    # 2 5     1     1     0     62    7     104   103   555   43    1      2     10    1     2     30 m… 6    
    # 3 5     1     1     0     48    1     170   72    555   72    28     72    10    1     2     30 m… 1    
    # 4 5     1     1     0     48    21    72    99    937   99    14     99    10    1     2     30 m… 1    
    # 5 5     1     1     0     57    23    80    94    72    94    49     1     1     1     2     30 m… 1    
    # 6 5     1     1     0     57    24    231   104   2     233   96     1     1     1     2     30 m… 1    
    # 7 5     1     1     0     63    2     438   80    14    80    54     350   0,1   1     2     30 m… 14   
    # 8 5     1     1     0     63    1     350   55    15    55    2873,… 392   0,1   1     2     30 m… 14   
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 2016-06-09
      • 2019-04-28
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多