gpt4 book ai didi

r - 使用过滤数据计算分类平均值

转载 作者:行者123 更新时间:2023-12-01 08:50:15 24 4
gpt4 key购买 nike

我有以下数据集:

A -1
A 10
B 8
D -1
A 0
A 4
B 2
C 6

我想像这样向它添加列:

A -1 4,6
A 10 4,6
B 8 5,0
D -1 5,0
A 0 4,6
A 4 4,6
B 2 5,0
C 6 6,0

这里发生了什么?

好吧,我计算了每个分类字母变量的平均值,但忽略了负数,并将其作为新列值。

如果类别只有负值,我给出了总平均值(忽略负值)。

在 SQL 中,这将通过过滤组函数和连接来完成。在 excel 中,这将是有条件的 vlookup。我如何在 R 中做到这一点?

编辑:

# Create dataset
category <- c("A","A","B","D","A","A","B","C")
value <- c(-1,10,8,-1,0,4,2,6)
dataset <- data.frame(category, value)

# Calculated means

fdata <- dataset[dataset[,'value']>-1,]
aggregate(fdata[,2], list(fdata$category), mean)

最佳答案

我们可以使用 ave来自按每个 category 分组的基础 R , 我们检查 all value在特定组中小于0,如果是那么我们选择mean整个 dataset如果不是,那么我们只取mean该组的。

dataset$mean_column <- with(dataset, ave(value, category, FUN = function(x) 
ifelse(all(x < 0), mean(value[value >= 0]), mean(x[x >= 0]))))

dataset

# category value mean_column
#1 A -1 4.666667
#2 A 10 4.666667
#3 B 8 5.000000
#4 D -1 5.000000
#5 A 0 4.666667
#6 A 4 4.666667
#7 B 2 5.000000
#8 C 6 6.000000

关于r - 使用过滤数据计算分类平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44449665/

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