gpt4 book ai didi

r - dplyr:将出现次数放入新变量中

转载 作者:行者123 更新时间:2023-12-03 09:15:22 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Count number of rows per group and add result to original data frame

(10 个回答)


3年前关闭。




想了解 dplyr 代码,但无法弄清楚。已经看到这里针对许多变量( summarizing counts of a factor with dplyrPutting rowwise counts of value occurences into new variables, how to do that in R with dplyr? )描述的类似问题,但是我的任务要小一些。
给定一个数据框,如何计算变量的频率并将其放入新变量中。

set.seed(9)
df <- data.frame(
group=c(rep(1,5), rep(2,5)),
var1=round(runif(10,1,3),0))

然后我们有:
>df
group var1
1 1 1
2 1 1
3 1 1
4 1 1
5 1 2
6 2 1
7 2 2
8 2 2
9 2 2
10 2 3

想要第三列指示每组( group )多少次 var1发生,在这个例子中这将是:count=(4,4,4,4,1,1,3,3,3,1)。
我尝试过 - 没有成功 - 诸如:
df %>%  group_by(group) %>% rowwise() %>% do(count = nrow(.$var1))

非常感谢解释!

最佳答案

您需要做的就是按“group”和“var1”两列对数据进行分组:

df %>% group_by(group, var1) %>% mutate(count = n())
#Source: local data frame [10 x 3]
#Groups: group, var1
#
# group var1 count
#1 1 1 4
#2 1 1 4
#3 1 1 4
#4 1 1 4
#5 1 2 1
#6 2 1 1
#7 2 2 3
#8 2 2 3
#9 2 2 3
#10 2 3 1

评论后编辑

以下是您不应该这样做的示例:
df %>% group_by(group, var1) %>% do(data.frame(., count = length(.$group)))

dplyr 实现与 n()肯定更快,更干净,更短,并且应该始终优于上述实现。

关于r - dplyr:将出现次数放入新变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784361/

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