這就是我的資料框的樣子
每個 Participant_ID 有一個包含幾列和幾行的資料框。我想對所有 Participant_ID 行的資料求和,以獲得每個 Participant_ID 的一個值。問題是某些列是空的(所有 NA),對于這些列,我想保留 NA 作為結果。但是當我用 na.rm = T 求和時,它會將 NA 的總和轉換為 0。
我在用 :
df = df %>%
group_by(Participant_ID) %>%
summarise(across(where(is.numeric), ~ sum(.x, na.rm = T)))
如何排除僅包含 NA 的列(在 group_by 之后)?或者過濾包含至少一個數值的列(在 group_by 之后)?
非常感謝你的幫助 !!
uj5u.com熱心網友回復:
您只需要內部的函式across
以不同方式處理 NA 列。
假設我們有這個資料框:
df <- data.frame(Participant_ID = c('A', 'A', 'A'),
a = 1:3, b = c(4, NA, 6), c = as.numeric(c(NA, NA, NA)))
然后我們可以做
library(dplyr)
df %>%
group_by(Participant_ID) %>%
summarise(across(where(is.numeric),
~ if(all(is.na(.x))) NA_real_ else sum(.x, na.rm = T)))
#> # A tibble: 1 x 4
#> Participant_ID a b c
#> <chr> <int> <dbl> <dbl>
#> 1 A 6 10 NA
使用reprex v2.0.2創建于 2022-11-03
uj5u.com熱心網友回復:
我們可以fsum
使用collapse
library(collapse)
fsum(df[-1], df$Participant_ID)
a b c
A 6 10 NA
資料
df <- data.frame(Participant_ID = c('A', 'A', 'A'),
a = 1:3, b = c(4, NA, 6), c = as.numeric(c(NA, NA, NA)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/527007.html
標籤:rdplyr呐总结穿过
上一篇:在資料框中找到某個值