gpt4 book ai didi

r - dplyr 汇总和 group_by 用于唯一值

转载 作者:行者123 更新时间:2023-12-04 19:53:25 25 4
gpt4 key购买 nike

下面是一个有代表性的例子:

DF <- as.data.frame(matrix(data = 0, nrow = 9, ncol = 3))
colnames(DF) <- c("code", "actual", "expected")

DF$code <- letters[rep(1:3, each = 3)]
DF$actual <- runif(9, 3,5)
DF$expected <- rep(1:3, each = 3)

以下崩溃:
  DF %>%
group_by(code) %>%
summarise(Exp = expected)
Error: expecting a single value

但是,以下工作:
DF %>%
group_by(code) %>%
summarise(Exp = unique(expected))

但是,代码的唯一值只是一个值。为什么不返回值工作?为什么我需要用“独特”来包装它?

谢谢!

最佳答案

这是一个常见的错误。调试它的一种方法是在汇总调用中使用 paste()。

> DF %>% 
group_by(code) %>%
summarise(Exp=paste(expected, collapse='-'))

Source: local data frame [3 x 2]

code Exp
(chr) (chr)
1 a 1-1-1
2 b 2-2-2
3 c 3-3-3

你看到发生了什么吗?您正在尝试为单个组分配多个值。

一种解决方案是使用您描述的 unique 。或者,如果您知道所有具有相同代码的行始终具有相同的期望值,则可以直接 group_by:
> DF%>% group_by(code, expected) %>% summarise()
Source: local data frame [3 x 2]
Groups: code [?]

code expected
(chr) (int)
1 a 1
2 b 2
3 c 3

如果数据帧很大,group_by 将比基于 unique() 的解决方案快得多

关于r - dplyr 汇总和 group_by 用于唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30712834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com