对不起,我确定已经问过类似的问题,但我恐怕找不到了.我只是想在数据帧中总结很多变量.作为一个小例子,我想做的是计算df $ e,如下所示.
df <- data.frame(a=c(1,2,3,4,5), b=(c(6,7,8,9,10)),
c=c(1,2,3,4,5), d=(c(6,7,8,9,10)))
df$e <- with(df, a+b+c+d) # this is the right answer
Run Code Online (Sandbox Code Playgroud)
但我想通过说df $ e < - "a和d之间所有变量的总和来表达它."
谢谢!帮助也赞赏标记.
回答: df$e <- rowSums(subset(df, select=a:d))
我没有表达,我需要它很清楚,但我是一无所知,subset因为我是的rowSums.
虚假数据插图:
df <- data.frame(a=c(1,2,3,4,5), b=(c(2,2,2,2,NA)),
c=c(NA,2,3,4,5)))
Run Code Online (Sandbox Code Playgroud)
如果不是NA值,这会得到我想要的答案:
df$count <- with(df, (a==1) + (b==2) + (c==3))
Run Code Online (Sandbox Code Playgroud)
如果我只对它感兴趣,那么会有更优雅的方式吗,例如变量== 2?
df$count <- with(df, (a==2) + (b==2) + (c==2))
Run Code Online (Sandbox Code Playgroud)
非常感谢!
我一直在努力寻找答案.我保证我会尝试从解决方案中学习.为了学习,我想了解如何使用显式循环,但如果你想分享矢量化方法作为奖励,也非常感谢.
假设我每天都要玩一次游戏,我知道每天获胜的可能性.我想要一个函数,它接受概率向量并至少在一天内返回累积成功概率.因此,如果我连续玩了3天并且胜利的概率是每天0.5,那么我的函数应该返回"0.875,0.75,0.5"
这是我最近尝试编写此函数的失败:
prob_cum <- function(prob_today) {
p_cum <- rep(0, length(prob_today))
for (i in 1:length(prob_today)) {
for (j in i:length(prob_today)) {
p_cum[j] <- p_cum[j-1] - ((1 - p_cum[j-1]) * prob_today[j])
}
}
p_cum
}
prob_daily <- c(.5,.5,.5)
prob_cum(prob_daily)
Run Code Online (Sandbox Code Playgroud)