gpt4 book ai didi

dplyr 中的 rowMeans 函数

转载 作者:行者123 更新时间:2023-12-02 19:54:11 29 4
gpt4 key购买 nike

我一直在尝试在 dplyrmutate 函数中运行计算 rowMeans,但不断出现错误。下面是一个示例数据集和所需的结果。

DATA = data.frame(SITE = c("A","A","A","A","B","B","B","C","C"), 
DATE = c("1","1","2","2","3","3","3","4","4"),
STUFF = c(1, 2, 30, 40, 100, 200, 300, 5000, 6000),
STUFF2 = c(2, 4, 60, 80, 200, 400, 600, 10000, 12000))

RESULT = data.frame(SITE = c("A","A","A","A","B","B","B","C","C"),
DATE = c("1","1","2","2","3","3","3","4","4"),
STUFF = c(1, 2, 30, 40, 100, 200, 300, 5000, 6000),
STUFF2 = c(2, 4, 60, 80, 200, 400, 600, 10000, 12000),
NAYSA = c(1.5, 3, 45, 60, 150, 300, 450, 7500, 9000))

我编写的代码首先随机采样 STUFFSTUFF2。然后我想计算 STUFFSTUFF2rowMeans 并将结果导出到新列。我可以使用 tidyr 完成此任务,但必须重做大量变量。此外,我可以使用 R 基础包,但更喜欢使用 dplyr 中的 mutate 函数找到解决方案。提前致谢。

RESULT = group_by(DATA, SITE, DATE) %>%
mutate(STUFF=sample(STUFF,replace= TRUE), STUFF2 = sample(STUFF2,replace= TRUE))%>%
# These approaches return errors
mutate(NAYSA = rowMeans(DATA[,-1:-2]))
mutate(NAYSA = rowMeans(.[,-1:-2]))
mutate (NAYSE = rowMeans(.))

最佳答案

您需要 dplyr 中的 rowwise 函数来执行此操作。您的数据是随机的(由于样本),因此它会产生不同的结果,但您会看到它有效:

library(dplyr)
group_by(DATA, SITE, DATE) %>%
mutate(STUFF=sample(STUFF,replace= TRUE), STUFF2 = sample(STUFF2,replace= TRUE))%>%
rowwise() %>%
mutate(NAYSA = mean(c(STUFF,STUFF2)))

输出:

Source: local data frame [9 x 5]
Groups: <by row>

SITE DATE STUFF STUFF2 NAYSA
1 A 1 1 2 1.5
2 A 1 2 2 2.0
3 A 2 30 80 55.0
4 A 2 30 60 45.0
5 B 3 200 600 400.0
6 B 3 300 200 250.0
7 B 3 100 600 350.0
8 C 4 5000 12000 8500.0
9 C 4 6000 10000 8000.0

如您所见,它根据 STUFF 和 STUFF2 计算每行的行平均值

关于dplyr 中的 rowMeans 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29083641/

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