![](/img/trans.png)
[英]Creating rowSums of one variable conditional on the value of another variable in 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.