gpt4 book ai didi

在数据框中有条件地删除下面的行并在 R 中将值一起添加

转载 作者:行者123 更新时间:2023-12-04 10:36:29 24 4
gpt4 key购买 nike

我有一个包含 3 列的大型数据集:名称、国家/地区和销售额。

我想按相同连续出现的名称对“销售额”列求和。然后我想删除所有行,但系列中第一次出现的行,用系列总和替换 Sales 的值。

例如:

Name,Country,Sales
A,V,100
A,W,100
B,X,100
B,Y,100
A,Z,100

将缩减为:

Name,Country,Sales
A,V,200
B,X,200
A,Z,100

有人知道怎么做吗?

最佳答案

您的数据

df <- structure(list(Name = c("A", "A", "B"), Country = c("X", "Y", 
"Z"), Sales = c(100L, 100L, 100L)), .Names = c("Name", "Country",
"Sales"), row.names = c(NA, -3L), class = c("data.table", "data.frame"
))

dplyr 解决方案

library(dplyr)
library(data.table)
ans <- df %>%
group_by(rleid(Name)) %>%
summarise(Name = unique(Name), Sales=sum(Sales)) %>%
select(-1)

输出

   Name Sales
<chr> <int>
1 A 200
2 B 100

替代示例

newdf <- rbind(df, data.frame(Name=c("A","A","B","B"),
Country=c("A","B","C","D"),
Sales=c(100,100,100,100)))
ans <- newdf %>%
group_by(rleid(Name)) %>%
summarise(Name = unique(Name), Sales=sum(Sales)) %>%
select(-1)

输出

    Name Sales
<fctr> <dbl>
1 A 200
2 B 100
3 A 200
4 B 200

关于在数据框中有条件地删除下面的行并在 R 中将值一起添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46133773/

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