相关疑难解决方法(0)

dplyr总结:等效".drop = FALSE"以保持组输出长度为零

当使用summarise具有plyrddply功能,空类别默认情况下删除.您可以通过添加更改此行为.drop = FALSE.然而,当使用这不起作用summarisedplyr.还有另一种方法可以在结果中保留空类别吗?

这是假数据的一个例子.

library(dplyr)

df = data.frame(a=rep(1:3,4), b=rep(1:2,6))

# Now add an extra level to df$b that has no corresponding value in df$a
df$b = factor(df$b, levels=1:3)

# Summarise with plyr, keeping categories with a count of zero
plyr::ddply(df, "b", summarise, count_a=length(a), .drop=FALSE)

  b    count_a
1 1    6
2 2    6
3 3    0

# Now try it with dplyr
df %.%
  group_by(b) %.%
  summarise(count_a=length(a), .drop=FALSE)

  b …
Run Code Online (Sandbox Code Playgroud)

r plyr dplyr tidyr

93
推荐指数
4
解决办法
3万
查看次数

使用dplyr中的数字索引替换变量的部分.我是否需要创建索引列并使用ifelse?

在较长的dplyr函数链的一个阶段,我需要使用数字索引替换变量的一部分来指定要替换的元素.

我的数据如下:

df1 <- data.frame(grp = rep(1:2, each = 3),
                  a = 1:6,
                  b = rep(c(10, 20), each = 3))
df1   
#   grp a  b
# 1   1 1 10
# 2   1 2 10
# 3   1 3 10
# 4   2 4 20
# 5   2 5 20
# 6   2 6 20
Run Code Online (Sandbox Code Playgroud)

假设我们在每个组内希望在一个或多个位置a用相应的元素替换变量中的元素b.在这个简单的例子中,我使用单个索引(id),但这可能是索引的向量.首先,这是我将如何做到这一点ddply:

library(plyr)
id <- 2    
ddply(.data = df1, .variables = .(grp), function(x){
  x$a[id] <- x$b[id] …
Run Code Online (Sandbox Code Playgroud)

r dplyr

17
推荐指数
1
解决办法
2625
查看次数

标签 统计

dplyr ×2

r ×2

plyr ×1

tidyr ×1