gpt4 book ai didi

r - 合并具有相等和不相等数据的行

转载 作者:行者123 更新时间:2023-12-04 13:31:49 24 4
gpt4 key购买 nike

我正在努力合并一些凌乱的数据。

我有一个像这样的数据框:

df <- data.frame(name = c("A", "A", "B", "B", "C", "C"), 
number = c(1, 1, 2, 2, 3, 3),
product = c("fixed", "variable", "aggregate", "variable", "fixed", "fixed"),
vol = c(1, 9, 2, 6, 4, 7)
)

这是我正在努力的方向:
result <- data.frame(name = c("A", "B", "C"), 
number = c(1, 2, 3),
new_product = c("fixed variable", "aggregate variable", "fixed"),
vol = c(10, 8, 11)
)

我的问题是我需要合并数据框中的所有相等行。如果它们不是唯一的,我需要将它们合并成一个类似结果的名称。

我已经尝试过dplyr,但是在dplyr中,我无法以任何有意义的方式合并new_product,因为我无法再次引用同一列。
df %>% group_by(name) %>% summarize (name = name, 
number = number,
newproduct = paste(product, product) # ????

任何帮助,不胜感激!

最佳答案

这是我将使用data.table处理此问题的方法,尽管我不确定您如何定义number

library(data.table)
result <- setDT(df)[,.(new_product = toString(unique(product)), vol = sum(vol)), by = name]
result[, number := .I]
result
# name new_product vol number
# 1: A fixed, variable 10 1
# 2: B aggregate, variable 8 2
# 3: C fixed 11 3

注意:如果您更喜欢输出,则可以使用 paste(unique(product), collapse = " ")而不是 toString

或类似的 dplyr
df %>% 
group_by(name) %>%
summarise(new_product = toString(unique(product)), vol=sum(vol)) %>%
mutate(number = row_number())

关于r - 合并具有相等和不相等数据的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774388/

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