我有一个正在查看的数据集... 3列分别为name
,store
和amount
....
name store amount
John Doe Target 150
现在的诀窍是,这个John Doe
可能再次在文件中但有此数据
name store amount
John Doe Walmart 50
我想为John Doe的所有活动总结并添加 ADD 新列,如下所示:
name store A amount A store B amount B
John Doe Target 150 Walmart 50
transpose
和ddlyr
,但没有任何运气。感谢您的帮助...
答案 0 :(得分:0)
我有一个适用于您给出的特定示例的解决方案,但是我觉得它不是特别优雅,如果每个名称出现两次以上(在这种情况下,必须为mutate
动词提供更多选择。
df <- tibble(name = c("John Doe"),
store = c("Target", "Walmart"),
amount = c(150, 50))
coalesce_by_column <- function(df) {
return(dplyr::coalesce(!!! as.list(df)))
}
df2 <- df %>%
group_by(name) %>%
mutate(store_k = c("store A", "store B"),
amount_k = c("amount A", "amount B")) %>%
spread(store_k, store) %>%
spread(amount_k, amount) %>%
summarise_all(coalesce_by_column)
coalesce_by_column
函数组合了包含NA的不相交的行(有关更多详细信息,请检查here)。如果要重新排列列顺序,可以使用select
轻松地完成。