簡體   English   中英

使用dplyr在所選列上添加具有行方式意義的列

[英]add column with row wise mean over selected columns using dplyr

我有一個數據框,其中包含幾個在不同時間點測量的變量(例如, test1_tp1test1_tp2test1_tp3test2_tp1test2_tp2 ,...)。

我現在嘗試使用dplyr向數據框添加一個新列,該數據框計算這些列的選擇上的行方式(例如, test1所有時間點的平均值)。

  1. 即使使用用於計算顯式命名列的平均值的語法,我也很困難。 我沒有成功的嘗試是:

data %>% ... %>% mutate(test1_mean = mean(test1_tp1, test1_tp2, test1_tp3, na.rm = TRUE)

  1. 我還想用正則表達式/通配符來選擇列名,就像這樣

data %>% ... %>% mutate(test1_mean = mean(matches("test1_.*"), na.rm = TRUE)

您可以在select使用starts_with來查找以某個字符串開頭的所有列。

data %>%
  mutate(test1 = select(., starts_with("test1_")) %>%
           rowMeans(na.rm = TRUE))

以下是如何在dplyr中執行此操作 - 我使用iris數據作為示例:

iris %>% mutate(sum.Sepal = rowSums(.[grep("^Sepal", names(.))]))

這將計算以“Sepal”開頭的所有列的行和。 您可以以相同的方式使用rowMeans而不是rowSums

不是dplyr解決方案,但您可以嘗試:

cols_2sum <- grepl('test1',colnames(data))
rowMeans(data[,cols_2sum])

暫無
暫無

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

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