[英]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.