簡體   English   中英

循環遍歷 dataframe 的特定列,保持某些列固定

[英]Loop through specific columns of dataframe keeping some columns as fixed

我有一個大型數據集,前兩列用作 ID(一個是 ID,另一個是年份變量)。 我想按組計算一個計數並遍歷每個不是 ID 的變量。 下面的代碼顯示了我想為一個變量實現的目標:

library(tidyverse)

df <- tibble(
  ID1 = c(rep("a", 10), rep("b", 10)),
  year = c(2001:2020),
  var1 = rnorm(20),
  var2 = rnorm(20))

df %>%
  select(ID1, year, var1) %>%
  filter(if_any(starts_with("var"), ~!is.na(.))) %>%
  group_by(year) %>%
  count() %>%
  print(n = Inf)

我不能使用以for(i in names(df))開頭的循環,因為我想保留變量“ID1”和“year”。 如何為所有以“var”開頭的列運行這段代碼? 我嘗試使用 quosures 但它不起作用,因為我收到錯誤select() doesn't handle lists 我也嘗試使用select(starts_with("var")但沒有成功。非常感謝!

for(i in names(df)[grepl('var',names(df))])

另一種可能的解決方案:

library(tidyverse)

df %>% 
  group_by(ID1) %>% 
  summarise(across(starts_with("var"), ~ length(na.omit(.x))))

#> # A tibble: 2 × 3
#>   ID1    var1  var2
#>   <chr> <int> <int>
#> 1 a        10    10
#> 2 b        10    10

暫無
暫無

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

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