簡體   English   中英

您如何計算多列中的觀察數並使用 mutate 將計數作為 R 中的新列?

[英]How do you count the number of observations in multiple columns and use mutate to make the counts as new columns in R?

我有一個數據集,其中包含來自不同年份和不同組織的多行調查回復。 調查中有 100 個問題,人們可以跳過它們。 我試圖按組織逐年獲得每個問題的平均值(按組織和年份分組)。 我還想計算這些平均值中的人數,因為人們可以跳過它們。 我也希望這兩個數據點作為新列,因此總共將添加 200 列。 我想出了如何平均。 請參閱下面的代碼。 我似乎無法使用相同的 function 來計算觀察次數。

這就是我成功獲得平均值的方式。

df<- df%>%
  group_by(Organization, Year) %>%
  mutate(across(contains('Question'), mean, na.rm = TRUE, .names = "{.col}_average")) %>%
  ungroup()

我現在正在嘗試使用類似的設置來計算觀察次數。 我用原始數據復制了列,並在標題中添加了計數,這樣新的平均列就不會算作 R 需要為其找到 ncount 的列

df<- df%>%
  group_by(Organization, Year) %>%
  mutate(across(contains('Count'), function(x){sum(!is.na(.))}, .names = "{.col}_ncount")) %>%
  ungroup()

上面的代碼確實為我提供了新列,但所有列和所有行的 n 計數都相同? 有什么想法嗎?

問題出在 lambda function 即function(x)中,然后sum. 而不是x . 本身可以評估為整個數據

library(dplyr)
df%>%
  group_by(Organization, Year) %>%
  mutate(across(contains('Count'), 
     function(x){sum(!is.na(x))},
      .names = "{.col}_ncount")) %>%
  ungroup()

如果我們想使用. .x ,將 lambda function 指定為~

df%>%
  group_by(Organization, Year) %>%
  mutate(across(contains('Count'), 
     ~ sum(!is.na(.)),
      .names = "{.col}_ncount")) %>%
  ungroup()

暫無
暫無

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

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