在 R 中创建一个包含条件行和的新变量
Creating a new variable that contains conditional rowsums in R
我有一个包含 12 个变量的数据框:
id_group1, id_group2, ..., id_group11 : 11 个具有数值的变量
mean_id:对上面提到的所有id_group变量表示平均
我现在需要的是一个新变量,它仅包含 id_group 个值大于 mean_id.
的变量的行和
我是 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)
我有一个包含 12 个变量的数据框:
id_group1, id_group2, ..., id_group11 : 11 个具有数值的变量
mean_id:对上面提到的所有id_group变量表示平均
我现在需要的是一个新变量,它仅包含 id_group 个值大于 mean_id.
的变量的行和我是 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)