gpt4 book ai didi

r - 分组和计数实例?

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

是否可以使用 R (dplyr) 对所有其他列的实例进行分组和计数?例如,以下数据框

x  a  b  c
1 0 0 0
1 1 0 1
1 2 2 1
2 1 2 1

转至此(注意:y 是正在计算的值)

编辑:- 解释转换,x 是我分组的依据,对于每个分组的数字,我想计算提到 0 和 1 和 2 的次数,就像在转换后的数据帧的第一行中一样,我们计算了多少次 x = 1 在其他列 (y) 中等于 0,因此 0 在 a 列中一次,b 列两次,c 列一次

x  y  a  b  c
1 0 1 2 1
1 1 1 0 2
1 2 1 1 0
2 1 1 0 1
2 2 0 1 0

最佳答案

结合 data.tablereshape2meltdcast 函数的方法:

library(data.table) # v1.9.5+
dt.new <- dcast(melt(setDT(df), id.vars="x"), x + value ~ variable)

这给出了:

dt.new
# x value a b c
# 1: 1 0 1 2 1
# 2: 1 1 1 0 2
# 3: 1 2 1 1 0
# 4: 2 1 1 0 1
# 5: 2 2 0 1 0

dcast 中,您可以指定要使用的聚合函数,但在这种情况下这不是必需的,因为默认聚合函数是 length。如果不使用聚合函数,您将收到警告:

Aggregation function missing: defaulting to length

此外,如果您没有将数据框显式转换为数据表,data.table 将重定向到 reshape2(请参阅评论中@Arun 的解释) .因此,此方法也可以与 reshape2 一起使用:

library(reshape2)
df.new <- dcast(melt(df, id.vars="x"), x + value ~ variable)

使用的数据:

df <- read.table(text="x  a  b  c
1 0 0 0
1 1 0 1
1 2 2 1
2 1 2 1", header=TRUE)

关于r - 分组和计数实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32331552/

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