簡體   English   中英

在 R 中創建一個包含條件行和的新變量

[英]Creating a new variable that contains conditional rowsums in R

我有一個包含 12 個變量的數據框:

id_group1, id_group2, ..., id_group11 : 11 個帶有數值的變量

mean_id : 對上述所有 id_group 變量的均值

我現在需要的是一個新變量,它只包含值大於 mean_id 的 id_group 變量的 rowsum。

我是 R 的新手,仍在為看似簡單的操作而苦苦掙扎 - 到目前為止,我曾嘗試使用 ifelse 結構,但似乎從未奏效。

有誰知道如何解決這個問題?

這是apply一種選擇。 循環遍歷行(假設最后一列是“mean_id”,對大於第 12 列的其他元素進行子集化並得到sum

apply(df1, 1, function(x) sum(x[-12][x[-12] > x[12]], na.rm = TRUE))
#[1] 42 40 52 39 50 51 49 49 24 27

或使用rowSums ,我們replace第 12 列以外的列中的元素,其中值小於或等於mean列並獲得rowSums

rowSums(replace(df1[-12], df1[-12] <= df1[,12], NA), na.rm = TRUE)
#[1] 42 40 52 39 50 51 49 49 24 27

數據

set.seed(24)
df1 <- as.data.frame(matrix(sample(1:8, 11 * 10, replace = TRUE), 
     ncol = 11, dimnames = list(NULL, paste0("id_group", 1:11))))
df1$mean_id <- sample(1:6, 10, replace = TRUE)

暫無
暫無

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

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