【发布时间】:2019-12-17 14:52:37
【问题描述】:
我试图根据它们是否大于或小于 0 有条件地对许多列求和。我很惊讶我找不到 dplyr 或 data.table 解决这个问题。我想为大型 data.frame 计算 4 个新列(要计算的列在帖子的底部)。
dat2=matrix(nrow=10,rnorm(100));colnames(dat2)=paste0('V',rep(1:10))
dat2 %>% as.data.frame() %>%
rowwise() %>%
select_if(function(col){mean(col)>0}) %>%
mutate(sum_pos=rowSums(.)) ##Obviously doesn't work
这些是我想要计算的简单统计数据(是的;这些 apply 语句有效,但我的 dplyr 链中还有其他事情要做,所以这就是我寻找dplyr 或data.table 方式的原因.每个给定行的正负列是不同的,所以我无法获取列列表(必须按行动态完成)。
#Calculate these, but in a dplyr chain?
n_pos=apply(dat2,1,function(x) sum((x>0)))
n_neg=apply(dat2,1,function(x) sum((x<0)))
sum_pos=apply(dat2,1,function(x) sum(x[(x>0)]))
sum_neg=apply(dat2,1,function(x) sum(x[(x<0)]))
【问题讨论】:
-
rowSums(replace(dat2, dat2 < 0, 0))
标签: r dplyr data.table